在Python中使用Matplotlib默认选项绘制的图片往往达不到论文期刊的要求,我们自己制作模板也要花费不少功夫。Science Plots是一个基于Matplotlib的专门为科研论文打造的轻量化的绘图工具包,内置了很多期刊要求的格式,使用起来非常方便。 和其他库一样使用pip进行安装 先来看看官方的效果图吧
![](http://image109.360doc.com/DownloadImg/2023/05/3017/266807227_1_2023053005581334_wm.png)
matplotlib默认模板 SciencePlots模板 官方案例是以science的投稿要求绘制,其内置还有ieee的模板,方便根据期刊进行选择。import numpy as np import matplotlib.pyplot as plt from scipy.interpolate import interp1d A, nu, k = 10, 4, 2 def f(x, A, nu, k): return A * np.exp(-k*x) * np.cos(2*np.pi * nu * x) xmax, nx = 0.5, 8 x = np.linspace(0, xmax, nx) y = f(x, A, nu, k) f_nearest = interp1d(x, y,'nearest') f_linear = interp1d(x, y,'linear') f_cubic = interp1d(x, y,'cubic') f_next = interp1d(x, y, 'next') x2 = np.linspace(0, xmax, 100) plt.plot(x, y, 'o', label='data points') plt.plot(x2, f(x2, A, nu, k), label='exact') plt.plot(x2, f_nearest(x2), label='nearest') plt.plot(x2, f_linear(x2), label='linear') plt.plot(x2, f_cubic(x2), label='cubic') plt.plot(x2, f_next(x2), label='next') plt.legend(loc=1) plt.show()
而想要使用SciencePlots库仅需在下方标记位置(第15行)添加一行代码即可 import numpy as np import matplotlib.pyplot as plt from scipy.interpolate import interp1d A, nu, k = 10, 4, 2 def f(x, A, nu, k): return A * np.exp(-k*x) * np.cos(2*np.pi * nu * x) xmax, nx = 0.5, 8 x = np.linspace(0, xmax, nx) y = f(x, A, nu, k) f_nearest = interp1d(x, y,'nearest') f_linear = interp1d(x, y,'linear') f_cubic = interp1d(x, y,'cubic') f_next = interp1d(x, y, 'next') x2 = np.linspace(0, xmax, 100) with plt.style.context(['science','no-latex']):#使用SciencePlots plt.plot(x, y, 'o', label='data points') plt.plot(x2, f(x2, A, nu, k), label='exact') plt.plot(x2, f_nearest(x2), label='nearest') plt.plot(x2, f_linear(x2), label='linear') plt.plot(x2, f_cubic(x2), label='cubic') plt.plot(x2, f_next(x2), label='next') plt.legend(loc=1) plt.show()
可以看到调用SciencePlots的格式为: with plt.style.context(['science','no-latex']):
注意SciencePlots绘图需要调用latex中的字体,所以如果没有安装latex请务必加入'no-latex’以免报错。 最后看一下对比吧 ![](http://image109.360doc.com/DownloadImg/2023/05/3017/266807227_3_20230530055813550_wm.png)
默认模板 ![](http://image109.360doc.com/DownloadImg/2023/05/3017/266807227_4_20230530055813816_wm.png)
使用SciencePlots后
|