前言
科研写作中,黑压压的文字里面如果能有一些优美的图片无疑会给论文增色不少,绘图的工具有很多,常用的有Excel、Python、Matlab等,Matlab在绘图方面相较于Python有一种更加原生的科研风,而且可视化编辑图例、坐标轴标签等方面也比Python更加便捷。但是,随着Python的流行和兴起,在数据处理方面的生态(第三方库)众多,因此,使用Python直接绘制科研图像也成为了很多人的需求,为此, John Garrett在Maplotlib的基础上进行改进,制定了很多适合于科研绘图的主题,编写了一个Python库**scienceplots**, 极大地提高了Python绘制科研图像的便捷性。
需要注意的是:这个库对于中文用户并不是很方便,尝试多次均报错,但是在英文环境下图形还是很漂亮的。
查看可以使用的主题:
import matplotlib.pyplot as plt
import scienceplots
print(plt.style.available)
['Solarize_Light2','_classic_test_patch','_mpl-gallery','_mpl-gallery-nogrid','bmh','bright','cjk-jp-font','cjk-kr-font','cjk-sc-font','cjk-tc-font','classic','dark_background','fast','fivethirtyeight','ggplot','grayscale','grid','high-contrast','high-vis','ieee','latex-sans','light','muted','nature','no-latex','notebook','pgf','retro','russian-font','sans','scatter','science','seaborn-v0_8','seaborn-v0_8-bright','seaborn-v0_8-colorblind','seaborn-v0_8-dark','seaborn-v0_8-dark-palette','seaborn-v0_8-darkgrid','seaborn-v0_8-deep','seaborn-v0_8-muted','seaborn-v0_8-notebook','seaborn-v0_8-paper','seaborn-v0_8-pastel','seaborn-v0_8-poster','seaborn-v0_8-talk','seaborn-v0_8-ticks','seaborn-v0_8-white','seaborn-v0_8-whitegrid','std-colors','tableau-colorblind10','turkish-font','vibrant']
使用方法
下面举例说明scienceplots的使用
import matplotlib.pyplot as plt
import scienceplots
import numpy as np# choose your theme
theme = 'science'
plt.style.use(theme)
x = np.linspace(0, np.pi, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.sin(2*x)
y4 = np.cos(2*x)ax = plt.subplot(111)
ax.plot(x, y1, label='sinx')
ax.plot(x, y2, label='cosx')
ax.plot(x, y3, label='sin2x')
ax.plot(x, y4, label='cos2x')
ax.set_xlabel('axis x')
ax.set_ylabel('axis y')
ax.set_title('current theme: ' + theme)
plt.legend()
plt.tight_layout()
plt.savefig('test.svg', dpi=200)
plt.show()
1. science主题
2. ieee主题
3. scatter主题(绘制散点图)
4. high-vis主题
5. high-contrast主题
6. grid主题
7. bmh主题
8. 主题可以叠加使用
仅需在绘图之前增加如下代码:
plt.style.use(['science', 'grid'])
多个主题通过字符串链表的形式传递进去即可。