SciencePlots简介: 一款论文绘图的工具包

SciencePlots简介

最近,一些公众号推送一款由哈佛博士生写的论文绘图神器。该项目地址是项目地址。 简单来说,它是一个基于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配置文件中。
效果图
那其实,细心的同学可以看到Line1Line5的曲线样式是重复的。至于为什么会这样的原因,我们可以去查看这些mplstyle文件的具体配置内容。要获取这些配置文件在电脑上的路径,可以用下述方式找到:

import matplotlib 
print(matplotlib.get_configdir())

这样就能打印出文件所在的路径。那在我电脑上,该路径为:
在这里插入图片描述
可以看到该工具包中的所有*.mplstyle文件都放在了.matplotlibstylelib文件夹内。因为我们上述代码中用的是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来尝试不同风格的组合搭配。此外,由于我们可以随意地修改工具包中的配置文件,因此我们自己也能配置一些你喜欢的个性化的风格样式。之后需要画图表的时候,直接调用即可,方便快捷。

  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值