4个 Python 库来美化你的 Matplotlib 图表

news2025/7/18 14:02:33

Matplotlib是一个被广泛使用的Python数据可视化库,相信很多人都使用过。

但是有时候总会觉得,Matplotlib做出来的图表不是很好看、不美观。

今天我就给大家分享四个美化Matplotlib图表的Python库,它们可以轻松让你的Matplotlib图表变得好看~

而且每个方法都可以使用两行代码来实现,一条import语句和一条Matplotlib的使用语句。

尽管这些库非常适合创建酷炫的图表,但是你还是需要了解你的目标受众以及可能遇到的视觉问题,比如色盲等情况。

下面就让我们来一起看看吧!

在开始使用探索Matplotlib图表之前,先创建一些虚拟数据,用来生成图表。

几行代码轻松搞定。

import numpy as np   
# 生成 x 值  
x = np.linspace( 0 , 10 , 20 )   
# 生成 y 值  
y = np.sin(x)   
y2 = np.cos(x)

01 赛博朋克风格——mplcyberpunk

赛博朋克是一种科幻小说的子类型,以其反乌托邦、技术先进的世界和反文化态度而闻名。

场景通常以未来主义风格描绘,经常包括霓虹灯及明亮、鲜艳的色彩等元素。

比如,在制作海报或者是信息图表时,你需要额外的元素来吸引读者。这便是赛博朋克风格可以发挥作用的地方。

但是,你也要知道,它在为出版物创建图表或在论文中使用时可能会被视为不专业,并且可能不适合视觉有问题的读者。

要开始使用这个主题,需要先安装mplcyberpunk库。

# 安装  
pip install mplcyberpunk

使用赛博朋克主题,只需要调用plt.style.use(),并传入参数cypberpunk即可。

使用plt.scatter()绘制散点图。为了使我们的散点发光,还需要调用make_scatter_glow()函数。

import mplcyberpunk  
import matplotlib.pyplot as plt  
  
# 使用赛博朋克风样式  
plt.style.use('cyberpunk')  
plt.figure(figsize=(8, 8))  
  
# 散点图1  
plt.scatter(x, y, marker='o')  
mplcyberpunk.make\_scatter\_glow()  
  
# 散点图2  
plt.scatter(x, y2, marker='o', c='lime')  
mplcyberpunk.make\_scatter\_glow()  
  
# 坐标轴名称  
plt.xlabel('X-Axis')  
plt.ylabel('Y-Axis')  
  
# 显示  
plt.show()

运行上面的代码时,可以得到下图。

将赛博朋克主题应用到折线图中。为了使线条发光,我们可以调用make_lines_glow()。

# 使用赛博朋克风样式  
plt.style.use('cyberpunk')  
plt.figure(figsize=(8, 8))  
  
# 折线图  
plt.plot(x, y, marker='o')  
plt.plot(x, y2, marker='o', c='lime')  
  
# 发光效果  
mplcyberpunk.make\_lines\_glow()  
  
# 坐标轴名称  
plt.xlabel('X-Axis')  
plt.ylabel('Y-Axis')  
  
# 显示  
plt.show()

运行完成,将返回带有霓虹灯线条的图表。

我们还可以将图表效果更进一步,在线条和X轴之间添加渐变填充。

# 使用赛博朋克风样式  
plt.style.use('cyberpunk')  
plt.figure(figsize=(8, 8))  
  
# 折线图  
plt.plot(x, y, marker='o')  
plt.plot(x, y2, marker='o', c='lime')  
  
# 发光效果+渐变填充  
mplcyberpunk.add\_gradient\_fill(alpha\_gradientglow=0.5, gradient\_start='zero')  
  
# 坐标轴名称  
plt.xlabel('X-Axis')  
plt.ylabel('Y-Axis')  
  
# 显示  
plt.show()

这便创造了一个非常有趣的效果。

当然这个赛博朋克库还有其他的美化参数,大家可以去GitHub上查看使用。

地址:https://github.com/dhaitz/mplcyberpunk

02 Matplotx

matplotx库提供了一种简单的方法可以快速对matplotlib图表进行美化。

它包含几个可以便捷使用,且可应用于任何matplotlib图表的主题。

在深色主题的Jupyter Notebook或VSCode中处理图表时,出现亮白色的图表可能会有些许刺眼。

为了减少这种影响,我们可以将样式设为深色主题。但是,这需要好几行代码才能实现。

正如接下来所看到的,Matplotx使这个过程变得更加容易。由于它包含多个主题,我们可以轻松找到一个与VSCode主题相匹配的。

通过打开终端/命令提示符并运行以下命令,可以将Matplotx安装到你的Python环境中去。

# 安装  
pip install matplotx

安装好以后,可以使用with语句来调用plt.style.context和传入matplotx.styles。

在这里,我们可以选择众多的可用主题。 比如非常流行的Dracula主题。

import matplotx  
with plt.style.context(matplotx.styles.dracula):  
    # 散点图  
    plt.scatter(x, y, c=y2)  
    # 颜色类型  
    plt.colorbar(label='Y2')  
    # 坐标轴名称  
    plt.xlabel('X')  
    plt.ylabel('Y')  
    # 显示  
    plt.show()

运行代码,得到下图。

其中matplotx中有许多不同的样式,具体情况如下。

下面让我们用Pitaya Smoothie主题来创建一个折线图。

由于有多个子主题,我们需要使用方括号访问它们。

在这个例子中,我们有一个深色主题,所以我们需要传入「dark」参数才能使用。

with plt.style.context(matplotx.styles.pitaya\_smoothie\['dark'\]):  
    # 折线图  
    plt.plot(x, y, marker='o')  
    plt.plot(x, y2, marker='o')  
    # 坐标轴名称  
    plt.xlabel('X')  
    plt.ylabel('Y')  
    # 显示  
    plt.show()  

当我们运行上面的代码时,我们会得到下面这个折线图。

当然也有许多浅色主题。比如Pitaya Smoothie有一个,可以像这样使用。

with plt.style.context(matplotx.styles.pitaya\_smoothie\['light'\]):  

如果你想了解更多有关此库的信息,可以查看它的GitHub。

地址:https://github.com/nschloe/matplotx

03 量子黑色风格

QuantumBlack Labs是一家成立于2012年的公司,旨在帮助其他公司使用数据做出更好的决策。

他们使用机器学习和人工智能等先进技术来分析医疗保健、金融和交通等一系列行业的复杂数据集。

几年前,他们在GitHub上发布了自己的样式库。

地址:

https://github.com/quantumblacklabs/qbstyles

要使用该主题,我们需要安装这个Python库。

# 安装  
pip install qbstyles

安装好以后,就可以使用了~

from qbstyles import mpl\_style  
  
# 深色主题开  
mpl\_style(dark=True)  
  
# 深色主题关  
mpl\_style(dark=False)

来创建一个散点图,代码如下。

from qbstyles import mpl\_style  
  
# 深色主题  
mpl\_style(dark=True)  
# 非深色主题  
mpl\_style(dark=False)  
# 散点图  
plt.scatter(x, y, c=y2)  
# 颜色  
plt.colorbar(label='Y2')  
# 坐标轴名称  
plt.xlabel('X')  
plt.ylabel('Y')  
# 显示  
plt.show()

返回如下两种图表结果,具体取决于你选择的是浅色还是深色主题。

让我们看看深色主题的折线图是什么样子的。

# 深色主题  
mpl\_style(dark=True)  
  
# 折线图  
plt.plot(x, y, marker='o')  
plt.plot(x, y2, marker='o')  
  
# 坐标轴名称  
plt.xlabel('X')  
plt.ylabel('Y')  
  
# 显示  
plt.show()

当我们运行上面的代码时,我们会得到下面的图。

这个库的绘图样式与Matplotx中生成的绘图相比略有缓和。

但是,它确实感觉更专业一些,尤其是浅色主题的绘图。非常适合应用在专业演示或培训课程材料中。

04 科学图表

在撰写科学期刊或会议文章时,创建一个清晰、简单且易于解释的图表至关重要。

一些期刊,例如Nature,都是需要固定的样式,方便简化读者难以理解的图表。

这就是SciencePlots库的用武之地。 它经常被用于生成常见的科学期刊样式图表,从而使创建图表变得更加容易。

这个库的一大优点是它使图表适合黑白打印——这仍然是研究人员的普遍做法。通过更改线条样式或确保分类数据的散点图上有不同的形状,这将使得线条很容易区分。

如果您想探索SciencePlots中更多可用的样式,可以访问它的GitHub。

地址:

https://github.com/garrettj403/SciencePlots/wiki/Gallery

运行SciencePlots库需要在你的电脑上安装LaTeX。你可以下面的地址找到有关 LaTex以及如何安装等更多详细信息。

地址:https://www.latex-project.org/get/

在完成库的安装及LaTeX设置完成后,可以使用下面的代码创建一个科学绘图图表。

import scienceplots  
  
with plt.style.context(\['science', 'high-vis'\]):  
    # 新建画布  
    plt.figure(figsize=(6, 6))  
  
    # 折线图  
    plt.plot(x, y, marker='o', label='Line 1')  
    plt.plot(x, y2, marker='o', label='Line 2')  
  
    # 坐标轴名称  
    plt.xlabel('X')  
    plt.ylabel('Y')  
  
    # 图例  
    plt.legend()  
  
    # 显示  
    plt.show()

当我们运行上面的代码时,我们得到以下图表,这非常适合使用在期刊出版物中。

让我们看看IEEE风格是什么样的。我们可以通过修改参数来创建一个。

with plt.style.context(\['science', 'ieee'\]):

和上面的有点不一样,颜色也变了,但还是一个很好看的科学期刊图表。

这对于搞学术研究的同学帮助非常大。

通过使用SciencePlots,不再为调整大小、颜色和线条样式而烦恼。

05 总结

在本文中,我们看到了四个非常有用的matplotlib python库,它们可以让你的matplotlib图表更上一层楼。

这些库中的每一个都为你的绘图提供了独特的样式。

尽管这些样式提供了很好的创意可视化效果,但你也确实需要考虑你的受众。

创建出色的数据视觉效果的全部意义在于让你的信息易于理解,并尽可能以最好的方式分享你的故事。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/433424.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

fastjson 反序列化之mysql JDBC 利用

前言: 在打春秋云境Exchange 靶场时,入口点是华夏ERP 2.3版本系统,存在fastjson 反序列化漏洞,在尝试常见的fastjson利用链反弹shell都没有反应,最终使用mysql JDBC利用链反弹shell成功。在此记录一下。 复现本地靶场…

QT安装mysql驱动和使用ODBC连接mysql

文章目录 QT安装mysql驱动和使用ODBC连接mysql使用驱动连接mysql编译mysql驱动连接mysql 使用ODBC连接mysql QT安装mysql驱动和使用ODBC连接mysql 上一篇博文中提到了mysql的使用,但是很多人在使用新版Qt连接mysql的时候出现连接不上或者是没有mysql驱动的问题&…

不懂就问,Milvus 新上线的资源组功能到底怎么样?

在近期更新的 Milvus 2.x 版本中,我们上线了在社区中呼声一直很高的【资源组功能】。有了这个功能,用户再也不需要“为每个 collection 部署一套 Milvus 服务”的方案,轻松实现对 Query Node 资源进行分组管理,达到物理资源隔离的…

【C++】STL中的容器适配器 stack queue 和 priority_queue 的模拟实现

STL中的容器适配器 一、容器适配器1、什么是容器适配器2、STL标准库中的容器适配器 二、stack的模拟实现1、stack的简单介绍2、栈的模拟实现 三、queue的模拟实现1、queue的简单介绍2、queue的模拟实现 四、priority_queue的模拟实现1、priority_queue的简单介绍2、priority_qu…

家用洗地机哪款好用?好用的洗地机分享

要说现在家居清洁用什么单品更省心,洗地机必须要算一项。虽然这在国际上也不是什么新鲜的概念了,但是在国内兴起也只是这几年的事,关于家用洗地机什么牌子最好之类的问题也是很多人都比较关心的问题。我个人也是不喜欢做家务的,家…

Anaconda及其他说明及安装

来自神秘人的投稿! 以下内容来源于官方视频说明:Anaconda Distribution versus Miniconda和其他整理与添加。 一、基础信息了解 1. 什么是Anaconda Anaconda Distribution:形象的比喻——一台笔记本电脑,一切都组装好了&#x…

利用用户生成内容来促进您的 WooCommerce 商店的销售

用户生成内容 (UGC) 是由对品牌或其产品和服务进行评论或评论的消费者创建的内容。它可以包括评论、照片、博客文章、推文或任何类型的社交媒体内容。 UGC 可以应品牌要求制作,也可以由产品用户独立制作。当用户生成的内容是独立制作的时候——比如一个新布加迪手…

UG NX二次开发(C#)-建模-移除特征参数

文章目录 1、前言2、在UG NX中的操作3、 利用UFun函数实现1、前言 UG NX建模方式是采用特征建模的,创建一个对象都是一个特征,这在历史记录中可以查看特征的建模历史、特征的参数已经特征之间的关联关系。有时为了设计的需要,需要去除特征之间的关联关系,那么就要移除特征…

【硬件外设使用】——ADC

【硬件外设使用】——ADC ADC基本概念ADC使用方法pyb.adcmachine.adc ADC可用的传感器 ADC基本概念 ADC是模拟数字转换器(Analog-to-Digital Converter)的缩写,它是一种将模拟信号转换成数字信号的电子元件。 ADC广泛用于测量和监测领域&…

sggJava基础第四天

1 分支结构 分支结构 根据条件,选择性地执行某段代码。 有if…else和switch-case两种分支语句。 概述 顺序结构的程序虽然能解决计算、输出等问题 但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构 if…else形式 单分支结构 代码实现 …

leetcode160. 相交链表

给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后&…

把脉分布式事务的模型、协议和方案

在当前的技术发展阶段,不同的业务场景对一致性、可靠性、易用性、性能等要求不同,应用架构可以根据实际场景的需求,灵活选择合适的分布式事务解决方案。行业中把分布式事务解决方案分为刚性事务方案和柔性事务方案这两大类。 就刚性事务这个…

leetcode328. 奇偶链表

给定单链表的头节点 head ,将所有索引为奇数的节点和索引为偶数的节点分别组合在一起,然后返回重新排序的列表。 第一个节点的索引被认为是 奇数 , 第二个节点的索引为 偶数 ,以此类推。 请注意,偶数组和奇数组内部的相…

CentOS 7安装GitLab、创建用户、创建Repo、拉取推送

效果图 前言 gitlab全球出名,包含免费的社区版CE、收费的企业版EE,在国内安装速度一般; gitlab极狐版是中国特供版,用起来就跟CE一样,推荐国内使用~ 实现步骤 - 安装&配置 先准备好gitlab服务对外的访问地址&am…

技术分享 | MySQL级联复制下进行大表的字段扩容

作者:雷文霆 爱可生华东交付服务部 DBA 成员,主要负责Mysql故障处理及相关技术支持。爱好看书,电影。座右铭,每一个不曾起舞的日子,都是对生命的辜负。 本文来源:原创投稿 *爱可生开源社区出品,…

使用Vite工具构建OpenLayers应用

vite作为最近大火的前端构建工具,吸引了大批开发者和工具框架作者的关注。vite自称为下一代的构建工具,这是要取代webpack的节奏啊。openlayers最新版本的案例代码就使用了vite来构建,因此这一篇文章我们来给大家示范一下如何使用vite来构建一个基于openlayers的应用。 首先…

从「搭子」文化,看融云如何助力垂类社交应用增长

互联网人拜佛 be like 👆,主打的就是一个垂直和精准。关注【融云全球互联网通信云】了解更多 其实,这也是年轻人的交友现状。最近随着大学生“特种兵式”旅游出圈的“搭子”友情,就是这样。 “搭子”,AKA 垂直细分领…

怎么把图片拼接成长图,3招教你快速处理

怎么把图片拼接成长图的方法,有没有快速便捷可一键操作的呢?当我们把图片拼接成长图有很多优点,比如说我们在图片文件传输的时候就更加快捷方便,还有就是我们在图片展示的时候更加统一。虽然有这么多优点,但是如果我们…

【RobotFramework自动化测试】

robotframework介绍 RF是一个基于Python语言开发的,可扩展的,是以关键字驱动模式的自动化测试框架。RF最新的版本是2019 年7月份发布,7月份之前只支持python2.7,7月之后支持3.X的版本 robotframework的安装 安装python环境&…

【JUC】CAS

【JUC】CAS 文章目录 【JUC】CAS1. 概述2. Unsafe类 1. 概述 在Java并发编程中,CAS是一种非阻塞的算法,即Compare and Swap(比较并交换)。 CAS通过比较内存中某个位置的值和预期值,如果相同,则将该位置的…