当前位置: 首页 > news >正文

SciencePlots绘图

简介

使用Python作为核心开发工具的机器学习和深度学习研究者自然会希望使用Matplotlib进行科研图表的绘制,但是Matplotlib默认的样式并不适合科研论文的出版,而SciencePlots就是为此定制的一系列科研绘图样式库,可以绘制很合适科研图表。

安装

具体的安装教程可以参考该项目Github开源地址,我这里简述一下。

PIP快速安装

使用下面的第一个命令安装最新版,第二个命令直接从PIP官方源下载安装,要落后最新版一个版本。

pip install git+https://github.com/garrettj403/SciencePlots.git
pip install SciencePlots

手动安装

上面的PIP安装会自动下载所有的*.mplstyle文件并将其放在当前环境的matplotlib的stylelib文件夹下,这个步骤也可以手动完成。Clone官方仓库到本地,将其中style文件夹下的所有以mplstyle为后缀的文件拷贝到matplotlib的资源目录下的stylelib文件夹,获得matplotlib资源目录可以通过下面的代码段获取。

import matplotlib
print(matplotlib.get_configdir())

获得该目录后直接访问,新建stylelib文件夹(若有则不需要新建),将所有*.mplstyle文件放到该目录下即可。

在这里插入图片描述

使用

在所有的样式中,science.mplstyle为最核心的样式,使用该样式的方法和matpl切换样式的方法一致。

import matplotlib.pyplot as plt
plt.style.use('science')

当然,也可以指定多个样式,如下面这段代码中,ieee样式在某些部分会覆盖science样式以达到绘图需求。

import matplotlib.pyplot as plt
plt.style.use(['science','ieee'])

上面这几种方法都是对整个脚本生效的,想要对某个部分绘图的代码生效,则只需要使用with语句进行上下文管理即可。

with plt.style.context(['science', 'ieee']):plt.figure()plt.plot(x, y)plt.show()

案例

下面三个图是science样式、science+ieee以及science+ieee+grid样式的效果,在样式中加入no-latex以禁用Latex字体渲染,这是因为science样式默认采用Latex渲染,若没有安装Latex或者考虑到其比较耗时,禁用即可。


science

science+ieee

science+ieee+grid

上述效果的代码如下。

import numpy as np
import matplotlib.pyplot as plt
def model(x, p):return x ** (2 * p + 2) / (2 + x ** (2 * p))
x = np.linspace(0.75, 1.25, 201)
with plt.style.context(['science', 'no-latex']):fig, ax = plt.subplots()for p in [10, 15, 20, 30, 50, 100]:ax.plot(x, model(x, p), label=p)ax.legend(title='Order')ax.set(xlabel='Voltage (mV)')ax.set(ylabel='Current (μA)')ax.autoscale(tight=True)fig.savefig('fig1.png', dpi=300)
with plt.style.context(['science', 'ieee', 'no-latex']):fig, ax = plt.subplots()for p in [10, 20, 50]:ax.plot(x, model(x, p), label=p)ax.legend(title='Order')ax.set(xlabel='Voltage (mV)')ax.set(ylabel='Current (μA)')ax.autoscale(tight=True)fig.savefig('fig2.png', dpi=300)
with plt.style.context(['science','ieee', 'grid', 'no-latex']):fig, ax = plt.subplots()for p in [10, 20, 50]:ax.plot(x, model(x, p), label=p)ax.legend(title='Order')ax.set(xlabel='Voltage (mV)')ax.set(ylabel='Current (μA)')ax.autoscale(tight=True)fig.savefig('fig3.png', dpi=300)

补充说明

如果有论文里绘图想要使用Matplotlib又不想花费太多精力定制绘图样式,SciencePlots是很不错的选择,已经有不少发表的文章采用该库了,感兴趣可以尝试一下。

http://www.lryc.cn/news/12144.html

相关文章:

  • 【Spark分布式内存计算框架——Spark SQL】12. External DataSource(下)rdbms 数据
  • 【React】React入门--更改状态、属性、表单的非受控组件和受控组件
  • 0216-0218复习:继承
  • 【数据库】HNU数据库系统期末考试复习重点
  • SCI论文写作常见连词及适用情况
  • Spring中的数据校验--进阶
  • 多种方法解决谷歌(chrome)、edge、火狐等浏览器F12打不开调试页面或调试模式(面板)的问题。
  • 默认生成的接口实现方法体的问题
  • 【OJ】十级龙王间的决斗
  • java 自定义注解
  • 产品经理知识体系:2.如何进行商业需求分析?
  • EditPlus正则表达式替换字符串详解
  • Go基础-环境安装
  • 《NFL橄榄球》:纽约巨人·橄榄1号位
  • 2023/02/18 ES6数组的解读
  • Ubuntu 20 安装包下载(清华镜像)
  • 华为OD机试 - 机器人走迷宫(JS)
  • 字节二面:10Wqps超高流量系统,如何设计?
  • 基于springboot+html汽车维修系统汽车维修系统的设计与实现
  • 营销狂人杜国楹的两大顶级思维
  • 面试题-前端开发JavaScript篇下(答案超详细)
  • Android 9.0 修改Recovery字体图片的大小(正在清理)文字大小
  • 操作系统 五(文件系统)
  • 华为OD机试 - 人数最多的站点(JS)
  • Mr. Cappuccino的第41杯咖啡——Kubernetes之Pod调度策略
  • Linux 磁盘挂载
  • 命名冲突问题与命名空间
  • Kafka漏洞修复之CVE-2023-25194修复措施验证
  • 中后序遍历构建二叉树与应用I
  • 随机退化模型--基础篇(1)