分享

Python科研绘图专用模板库Science Plots

 基算仿真 2023-05-30 发布于江苏
在Python中使用Matplotlib默认选项绘制的图片往往达不到论文期刊的要求,我们自己制作模板也要花费不少功夫。Science Plots是一个基于Matplotlib的专门为科研论文打造的轻量化的绘图工具包,内置了很多期刊要求的格式,使用起来非常方便。

和其他库一样使用pip进行安装

pip install SciencePlots

先来看看官方的效果图吧

matplotlib默认模板

SciencePlots模板

官方案例是以science的投稿要求绘制,其内置还有ieee的模板,方便根据期刊进行选择。
下面我们以Python几种一维插值方式的对比中使用的绘图代码尝试一下
原始代码为:
import numpy as npimport matplotlib.pyplot as pltfrom scipy.interpolate import interp1dA, nu, k = 10, 4, 2def f(x, A, nu, k):    return A * np.exp(-k*x) * np.cos(2*np.pi * nu * x)xmax, nx = 0.5, 8x = 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 npimport matplotlib.pyplot as pltfrom scipy.interpolate import interp1dA, nu, k = 10, 4, 2def f(x, A, nu, k):    return A * np.exp(-k*x) * np.cos(2*np.pi * nu * x)xmax, nx = 0.5, 8x = 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’以免报错。

最后看一下对比吧

默认模板

使用SciencePlots后

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多