SciencePlots 基本语法及特点

文章目录

  • 简介
  • 安装 LaTeX
  • SciencePlots 绘图示例

简介

用户有时需要根据期刊的配图绘制要求进行诸如字体、刻度轴、轴脊、图例等图层属性的定制化修改,耗时的同时也会容易导致用户忽略一些图层细节要求。

SciencePlots 作为一个专门用于科研论文绘图的第三方拓展工具包,提供了主流英文科技期刊(如 Nature、Science 和 IEEE 等)的 Matplotlib 图样式(Matplotlib Styles)。

SciencePlots 的安装代码如下:

pip install SciencePlots

安装 LaTeX

为了更好地显示学术论文插图和方便后续印刷,插图中的字体样式一般要求为 LaTeX 编写样式,SciencePlots 可以简单地实现该要求。SciencePlots 库实现 LaTeX 编写样式需要使用者在计算机上安装 LaTeX

其余类型操作系统安装步骤参考 SciencePlots 官方教程即可。

  1. 安装 MikTex 和 Ghostscript
    ScienePlots 库官方建议用户使用 MikTex 软件安装 LaTeX,用户直接从 MikTex 官网下载其最新版本并安装即可。Ghostscript 是一套建基于 Adobe、PostScript 及可移植文档格式(PDF)的页面描述语言等而编译成的免费软件,用户可从其官网下载最新版本并安装。
  2. 将软件的安装路径添加到系统环境变量中
    在安装了上述两款软件后,用户还需要将它们的安装路径添加到系统环境变量中,具体为“\...\miktex\bin\x64”“\...\gs__( 版本号)\bin”。添加完系统环境变量后,重启,相关配置即可生效。

SciencePlots 绘图示例

如果读者投稿的期刊有特殊字体要求,那么读者可设置不使用 LaTeX 绘图::plt.style.use(['science',' no-latex'])

下图为 SciencePlots 中多种绘图风格示例,
(a)为 Matplotlib 的默认颜色主题和绘图风格

import pandas as pd
import numpy as np
import matplotlib.pyplot as pltdata = pd.read_excel(r"\分组误差线图构建.xlsx")#(a)Matplotlib的默认颜色主题和绘图风格
selsect = ["A","B","C","D"]
colors = ["#2FBE8F","#459DFF","#FF5B9B","#FFCC37"]
fig,ax = plt.subplots(figsize=(4,3.5),dpi=100,facecolor="w")for index,color in zip(selsect,colors):data_selcet = data.loc[data['type']==index,:]ax.errorbar(x=data_selcet["time"],y=data_selcet["mean"],yerr=data_selcet["sd"],linewidth=1,marker='o',ms=10,mew=1,mec='k',capsize=5,label=index)ax.legend()ax.set(xlabel='Time', ylabel='Values',xlim=(-2,40),ylim=(-8,30))plt.savefig('\第2章 绘制工具及其重要特征\图2-3-8 ScienecePlots_matplotlib.png', bbox_inches='tight',dpi=600)
plt.savefig('\第2章 绘制工具及其重要特征\图2-3-8 ScienecePlots_matplotlib.pdf', bbox_inches='tight') 
plt.show()

(b)为 Science 系列期刊风格绘制结果

#(b)Science系列期刊风格绘制结果selsect = ["A","B","C","D"]
colors = ["#2FBE8F","#459DFF","#FF5B9B","#FFCC37"]
plt.style.use('science')
fig,ax = plt.subplots(figsize=(4,3.5),dpi=100,facecolor="w")
for index,color in zip(selsect,colors):data_selcet = data.loc[data['type']==index,:]ax.errorbar(x=data_selcet["time"],y=data_selcet["mean"],yerr=data_selcet["sd"],linewidth=1,marker='o',ms=10,mew=1,mec='k',capsize=5,label=index)ax.legend()ax.set(xlabel='Time', ylabel='Values',xlim=(-2,40),ylim=(-8,30))
plt.savefig('\第2章 绘制工具及其重要特征\图2-3-8 SciencePlots_science.png', bbox_inches='tight',dpi=600)
plt.savefig('\第2章 绘制工具及其重要特征\图2-3-8 SciencePlots_science.pdf', bbox_inches='tight') 
plt.show()

(c)为 IEEE 期刊风格绘制结果

#(c)IEEE期刊风格绘制结果
selsect = ["A","B","C","D"]
colors = ["#2FBE8F","#459DFF","#FF5B9B","#FFCC37"]
plt.style.use(['science','ieee'])
fig,ax = plt.subplots(figsize=(4,3.5),dpi=100,facecolor="w")
for index,color in zip(selsect,colors):data_selcet = data.loc[data['type']==index,:]ax.errorbar(x=data_selcet["time"],y=data_selcet["mean"],yerr=data_selcet["sd"],linewidth=1,marker='o',ms=10,mew=1,mec='k',capsize=5,label=index)ax.legend()ax.set(xlabel='Time', ylabel='Values',xlim=(-2,40),ylim=(-8,30))
plt.savefig('\第2章 绘制工具及其重要特征\图2-3-8 SciencePlots_ieee.png', bbox_inches='tight',dpi=600)
plt.savefig('\第2章 绘制工具及其重要特征\图2-3-8 SciencePlots_ieee.pdf', bbox_inches='tight') 
plt.show()

(d)为 Nature 期刊风格绘制结果

#(d)Nature期刊风格绘制结果
colors = ["#2FBE8F","#459DFF","#FF5B9B","#FFCC37"]
selsect = ["A","B","C","D"]
plt.style.use(['science','nature'])
fig,ax = plt.subplots(figsize=(4,3.5),dpi=100,facecolor="w")
for index,color in zip(selsect,colors):data_selcet = data.loc[data['type']==index,:]ax.errorbar(x=data_selcet["time"],y=data_selcet["mean"],yerr=data_selcet["sd"],linewidth=1,marker='o',ms=10,mew=1,mec='k',capsize=5,label=index)ax.legend()ax.set(xlabel='Time', ylabel='Values',xlim=(-2,40),ylim=(-8,30))plt.savefig('\第2章 绘制工具及其重要特征\图2-3-8 SciencePlots_nature.png', bbox_inches='tight',dpi=600)
plt.savefig('\第2章 绘制工具及其重要特征\图2-3-8 SciencePlots_nature.pdf', bbox_inches='tight') 
plt.show()

(e)为使用了 vibrant 颜色主题的 Science 期刊绘图风格

#(e)使用了vibrant 颜色主题的Science期刊绘图风格
selsect = ["A","B","C","D"]
plt.style.use(['science','vibrant'])
fig,ax = plt.subplots(figsize=(4,3.5),dpi=100,facecolor="w")
for index,color in zip(selsect,colors):data_selcet = data.loc[data['type']==index,:]ax.errorbar(x=data_selcet["time"],y=data_selcet["mean"],yerr=data_selcet["sd"],linewidth=1,marker='o',ms=10,mew=1,mec='k',capsize=5,label=index)ax.legend()ax.set(xlabel='Time', ylabel='Values',xlim=(-2,40),ylim=(-8,30))plt.savefig('\第2章 绘制工具及其重要特征\图2-3-8 SciencePlots_vibrant.png', bbox_inches='tight',dpi=600)
plt.savefig('\第2章 绘制工具及其重要特征\图2-3-8 SciencePlots_vibrant.pdf', bbox_inches='tight') 
plt.show()

(f)为使用了 bright 颜色主题的 Science 期刊绘图风格

#(f)使用了bright颜色主题的Science期刊绘图风格
selsect = ["A","B","C","D"]
plt.style.use(['science','bright'])
fig,ax = plt.subplots(figsize=(4,3.5),dpi=100,facecolor="w")
for index,color in zip(selsect,colors):data_selcet = data.loc[data['type']==index,:]ax.errorbar(x=data_selcet["time"],y=data_selcet["mean"],yerr=data_selcet["sd"],linewidth=1,marker='o',ms=10,mew=1,mec='k',capsize=5,label=index)ax.legend()ax.set(xlabel='Time', ylabel='Values',xlim=(-2,40),ylim=(-8,30))plt.savefig('\第2章 绘制工具及其重要特征\图2-3-8 SciencePlots_bright.png', bbox_inches='tight',dpi=600)
plt.savefig('\第2章 绘制工具及其重要特征\图2-3-8 SciencePlots_bright.pdf', bbox_inches='tight') 
plt.show()

更多绘图风格参考 SciencePlots 官网。

提示:SciencePlots 库不但提供了主流英文科技期刊的绘图风格模板,而且能够实现不同绘图风格的混合使用。此外,在使用该库的绘图风格时,读者可通过plt.style.use('science') 设置全局绘图风格,也可通过以下语句来临时使用绘图风格。

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

建议使用全局设置,因为在使用临时绘图风格,特别是使用了 LaTeX 字符时,将导致绘制图例、轴标签等图层属性时,无法使用 LaTeX 字符风格,造成绘图结果整体不协调问题。引入 SciencePlots 绘图主题样式的方式可能会随着版本的更新有所不同,读者应查看 SciencePlots 官网,使用其最新的引入方式。

参考书籍:宁海涛.科研论文配图绘制指南——基于Python[M].北京:人民邮电出版社,2023:42-44.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/62944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Revit SDK 介绍:DistanceToPanels 根据距离设置参数

前言 这个例子展示如何计算距离,并将距离的值设置为参数。 内容 选中球形,运行程序,会设置控制高度的参数,距离越远参数值越大。效果如下所示: 核心逻辑: 得到选中物体的位置遍历分割表面内部的 Panel…

Unity AssetBundle(1):Assets打包和依赖(Dependencies)

对Unity5.x后的AssetBundle依赖机制有了一点理解,创建了一个项目验证 github:GeWenL / AssetBundlePro AbScene.unity 资源有哪些? Some common types of Asset assetbundle打包命令是 BuildPipeline.BuildAssetBundles ,格式有: 引用&…

python接口自动化(二)--什么是接口测试、为什么要做接口测试(详解)

简介 上一篇和大家一起科普扫盲接口后,知道什么是接口,接口类型等,对其有了大致了解之后,我们就回到主题-接口测试。 什么是接口测试 接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各…

“算力+运力”扇动双翼,制造算力时代的蝴蝶效应

8月18日-20日,第二届中国算力大会在宁夏银川成功举办。 今年以来,随着大模型、AIGC等新技术的火爆,站在舞台中央的算力承载了无尽的期待,发展数字经济需要以算力基础设施为前提,社会各界已经形成了共识。 与此同时&…

无涯教程-Android - DatePicker函数

Android Date Picker允许您在自定义用户界面中选择由日,月和年组成的日期。为此功能,android提供了DatePicker和DatePickerDialog组件。 在本教程中,我们将通过DatePickerDialog演示日期选择器的用法, DatePickerDialog是一个包含DatePicker的简单对话框。 为了显示DatePicker…

Leetcode110. 平衡二叉树

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 题解&#xff…

【Go 基础篇】探索Go语言中的Map:数据的魔法盒子

嗨,各位Go语言的探索者们!在我们的编程世界中,总会有一些特殊的工具能够让我们的生活变得更加便捷。而在Go语言中,Map就是这样一种神奇的数据结构。它就像是一个魔法盒子,可以帮助我们高效地存储和操作键值对数据。本文…

vue3中axios的使用方法

在Vue 3中使用axios发送HTTP请求的方法与Vue 2中基本相同。首先,需要安装axios库: npm install axios然后,在Vue组件中引入axios: import axios from axios;接下来,可以在Vue组件的方法中使用axios发送HTTP请求。例如…

算法通关村14关 | 数据流中位数问题

1. 数据流中位数问题 题目 LeetCode295: 中位数是有序列表中间的数,如果列表长度是偶数,中位数是中间两个数的平均值, 例如:[2,3,4]的中位数是3, [2,3]中位数是(23)/ 2 2.5 设计一个数据结构: …

2023.9.1 简单认识 JVM

目录 JVM 内存划分 本地方法栈 虚拟机栈 程序计数器 堆区 元数据区 JVM 类加载机制 加载 验证 准备 解析 初始化 类被加载的几种情况(懒汉模式 ---> 只要被用到才会被加载) 双亲委派模型 JVM 内存划分 JVM 是一个应用程序,在…

用ChatGPT做一个Chrome扩展 | 京东云技术团队

用ChatGPT做了个Chrome Extension 最近科技圈儿最火的话题莫过于ChatGPT了。 最近又发布了GPT-4,发布会上的Demo着实吸睛。 笔记本上手画个网页原型,直接生成网页。网友直呼:前端失业了! 但我觉着啊,真就外行看热闹…

JVM之堆和方法区

目录 1.堆 1.1 堆的结构 1.1.1 新生代(Young Generation) 1.1.2 年老代(Old Generation) 1.1.3 永久代/元空间(Permanent Generation/Metaspace) 1.2 堆的内存溢出 1.3 堆内存诊断 1.3.1 jmap 1.3.2…

STM32启动模式详解

文章目录 前置知识1. 单片机最小系统组成2. BOOT电路3. 三种启动模式4. 存储器映射 从主FLASH启动从系统存储区启动从SRAM启动 前置知识 1. 单片机最小系统组成 一个单片机最小系统由电源、晶振、下载电路、BOOT电路、和复位电路组成。少一个单片机都启动不了。 2. BOOT电路 …

多源最短路径算法:Floyd-Warshall算法分析

文章目录 图的邻接矩阵 一.Floyd-Warshall算法思想(基于动态规划)二.Floyd-Warshall算法接口笔记附录:单源最短路径--Bellman-Ford算法1.Bellman-Ford算法接口核心部分2.Bellman-Ford算法接口 图的邻接矩阵 namespace Graph_Structure {//Vertex是代表顶点的数据类型,Weight是…

three.js(九):内置的路径合成几何体

路径合成几何体 TubeGeometry 管道LatheGeometry 车削ExtrudeGeometry 挤压 TubeGeometry 管道 TubeGeometry(path : Curve, tubularSegments : Integer, radius : Float, radialSegments : Integer, closed : Boolean) path — Curve - 一个由基类Curve继承而来的3D路径。 De…

【CSS】轮播图案例开发 ( 基本设置 | 子绝父相 | 浏览器水平居中 | 圆角设置 | 绝对定位居中设置 )

代码示例 : <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Banner 轮播</title><style>/* 取消浏览器或者其它标签的默认的内外边距 */* {margin: 0;padding: 0;}/* 取消列表样式 主要是…

百万级并发IM即时消息系统(2)

1.用户model type UserBasic struct {gorm.ModelName stringPassWord stringPhone string valid:"matches(^1[3-9]{1}\\d{9}$)"Email string valid:"email"Avatar string //头像Identity stringClientIp s…

nepctf2023 部分web复现

目录 <1> EZJAVA_CHECKIN(shiro550) <2> 独步天下-转生成为镜花水月中的王者(环境变量提权) <3> 独步天下-破除虚妄_探见真实(Venom代理&ping%0a绕过rce&c文件描述符未关闭连接父进程修改文件权限) <4> 独步天下-破除试炼_加冕成王(tp6rceu…

【Go 基础篇】Go语言数组内存分析:深入了解内部机制

在Go语言中&#xff0c;数组是一种基本的数据结构&#xff0c;用于存储一系列相同类型的元素。虽然数组在应用中非常常见&#xff0c;但了解其在内存中的存储方式和分配机制仍然是一个重要的课题。本文将深入探讨Go语言数组的内存分析&#xff0c;揭示数组在内存中的布局和分配…

网络协议三要素

计算机语言作为程序员控制一台计算机工作的协议&#xff0c;具备了协议的三要素。 语法&#xff0c;就是这一段内容要符合一定的规则和格式。例如&#xff0c;括号要成对&#xff0c;结束要使用分号等。语义&#xff0c;就是这一段内容要代表某种意义。例如数字减去数字是有意…