最近,一些公众号推送一款由哈佛博士生写的论文绘图神器。该项目地址是项目地址。 简单来说,它是一个基于Matplotlib的补充包,里面主要包含了一些以.mplstyle为后缀的图表样式的配置文件。这样,你画图的时候只需要通过调用这些配置文件,就能画出比较好看的数据可视化图表,也避免了你每次画图时都要从头开始手动配置图表的格式。 目前该工具包中包含有Science,IEEE等期刊的图表格式,还包括一些对图表中的网格和字体颜色等的配置文件。 但目前好像只支持折线图和散点图的作图,暂时不支持柱状图或者箱型图等其他类型的图表。
安装方式 用pip install的方式安装。已经装有Anaconda的同学,可以打开anaconda下的Anaconda Prompt终端,敲入如下命令即可:
# for latest version pip install git+https://github.com/garrettj403/SciencePlots.git # for last release pip install SciencePlots推荐第一种安装方法,因为第一种可以保证你下载到的是最新的工具包,里面包含有最新的配置文件。
SciencePlots中的主要内容 该工具包中大概由以下几种类型的配置文件组成:
1. 主题类型: Science,IEEE以及scatter(散点图)类型。这类配置文件主要是对 图片的大小、分辨率、字体的大小和种类、折线的类型和marker的大小形状等的配置。 2. 颜色类型: bright, high-vis等风格。改变图表中的曲线颜色。 3. 网格类型: grid. 如果你希望你的图表中有网格,导入它即可。 4. 其他类型: 该工具包还有一些其他配置文件,对它们的功能暂时不太了解。使用方式 使用这个工具包的方式大致有两种:
#第一种 import matplotlib.pyplot as plt plt.style.use('science') #这里表示使用Science风格的配置文件这种方式会让你当前脚本内编写的所有图表都是统一的Science。但是我在使用这种方式的时候,会出现bug,画出的图表的大小比例明显就有问题。 因此,就推荐使用下面这种方式:
#第二种 with plt.style.context(['ieee','grid']): x = np.linspace(0.0,2.0) y = np.sin(x) plt.plot(x,y,label = "Line1") plt.plot(x,2*y, label = "Line2") plt.plot(x,3*y, label = "Line3") plt.plot(x,4*y, label = "Line4") plt.plot(x,2.2*y, label = "Line5") plt.autoscale(tight = True) plt.legend(title = 'Order', edgecolor = 'k') plt.show()这样就能保证只有在with语句下面的图表会采用ieee, grid的风格。这样,你就可以在一个脚本里画出多个不同风格的图表。
效果展示
import numpy as np import matplotlib.pyplot as plt import matplotlib print(matplotlib.get_configdir()) #plt.style.use('science') plt.figure() with plt.style.context(['ieee','grid']): x = np.linspace(0.0,2.0) y = np.sin(x) plt.plot(x,y,label = "Line1") plt.plot(x,2*y, label = "Line2") plt.plot(x,3*y, label = "Line3") plt.plot(x,4*y, label = "Line4") plt.plot(x,2.2*y, label = "Line5") plt.autoscale(tight = True) plt.legend(title = 'Order', edgecolor = 'k') plt.show()效果如下图所示: 可以看到在上述源代码中,并没有显示地对每条曲线的样式进行配置。因为这些样式都已经定义在了ieee.mplstyle, grid.mplstyle配置文件中。 那其实,细心的同学可以看到Line1和Line5的曲线样式是重复的。至于为什么会这样的原因,我们可以去查看这些mplstyle文件的具体配置内容。要获取这些配置文件在电脑上的路径,可以用下述方式找到:
import matplotlib print(matplotlib.get_configdir())这样就能打印出文件所在的路径。那在我电脑上,该路径为: 可以看到该工具包中的所有*.mplstyle文件都放在了.matplotlib的stylelib文件夹内。因为我们上述代码中用的是ieee风格,所以我们用记事本打开ieee.mplstyle文件:
# Matplotlib style for IEEE plots # This style should work for most two-column journals # Set color cycle # Set line style as well for black and white graphs axes.prop_cycle : (cycler('color', ['k', 'r', 'b', 'g']) + cycler('ls', ['-', '--', ':', '-.'])) # Set default figure size figure.figsize : 3.3, 2.5 figure.dpi : 600 # Font sizes font.size : 12可以看到在第一行,它只定义了四种曲线的样式类型。因此上图中,第五条曲线与第一条曲线的样式重复也就情有可原了。那我们也可以自己更改其中的一些配置,比如此时的font.size(字体大小)设为12, 效果如上图中所示。现在我们将12更改为9, 代码与之前的代码一模一样,来看看效果如何: 可以看出第二幅图表中的字体相较于第一幅图是减小了的。
总结 本文只展示了工具包中部分的样式风格,大家也可以查看该项目中的Examples来尝试不同风格的组合搭配。此外,由于我们可以随意地修改工具包中的配置文件,因此我们自己也能配置一些你喜欢的个性化的风格样式。之后需要画图表的时候,直接调用即可,方便快捷。
