scienceplots绘图浅尝

news2024/11/17 1:54:08

前言

科研写作中,黑压压的文字里面如果能有一些优美的图片无疑会给论文增色不少,绘图的工具有很多,常用的有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'])

多个主题通过字符串链表的形式传递进去即可。
在这里插入图片描述

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

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

相关文章

【数据结构与算法】之哈希表系列-20240130

这里写目录标题 一、383. 赎金信二、387. 字符串中的第一个唯一字符三、389. 找不同四、409. 最长回文串五、448. 找到所有数组中消失的数字六、594. 最长和谐子序列 一、383. 赎金信 简单 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不…

三分钟教你入门规则引擎Drools

Drools是一款基于Java语言的开源的规则引擎,可以将复杂且多变的规则从硬编码中解放出来,以规则脚本的形式存放在文件或者特定的存储介质中(eg:数据库表),使得业务规则的变更不需要修正项目代码,重启服务器就可以在线上环境立即生效…

正则表达式 与文本三剑客(sed grep awk)

一,正则表达式 (一)正则表达式相关定义 1,正则表达式含义 REGEXP: Regular Expressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意…

【学网攻】 第(17)节 -- 命名ACL访问控制列表

系列文章目录 目录 前言 一、ACL(访问控制列表)是什么? 二、实验 1.引入 总结 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻】 第(4)节 -- 交换机划分Vlan【学网攻】 第…

Packet tracer-实现VLAN内部通信

案例一: 要求PC1和PC2,PC3和PC4之间能够实现互访 两个VLAN,一个VLAN对应一个子网 以S2为例: 步骤 1:在 S2 上创建并命令 VLAN,把VLAN划分给活动的端口。 步骤 2:在 S3 上创建并命令 VLAN&…

LeetCode Hot100 回顾(二)

子串 560.和为K的子数组 使用前缀和预处理一下题目给的数组, 然后用二重循环遍历一遍就可以了。 239.滑动窗口最大值 看题面比较容易想到的是用优先级队列来解决, 但是STL中的priority_queue不支持随机删除, 如果要用优先级队列来解决这道题的话比较复杂。这道题的一种正确…

QT + opengl 环境搭建(glfw, glad),创建一个简单窗口

一.下载glfw,glad并编译 1.glfw个人理解就是对底层opengl的一些基本接口的封装,提供了一些渲染物体所需的最低限度的接口。它允许用户创建OpenGL上下文、定义窗口参数以及处理用户输入。glfw的下载地址:Download | GLFW,下载完成后…

SpringBoot 结合 liteflow 规则引擎使用

1、前言 在日常的开发过程中,经常会遇到一些串行或者并行的业务流程问题,而业务之间不必存在相关性。 在这样的场景下,使用策略和模板模式的结合可以很好的解决这个问题,但是使用编码的方式会使得文件太多,在业务的部分环节可以…

15EG使用vivado2023.1建立hello world工程

1:打开软件建立工程 2:使用vivado创建设计模块并生成bit文件 3:导出硬件平台,使用vitis建立工程 4:使用vitis创建应用程序项目 5:硬件设置与调试 1:打开软件建立工程 打开VIVADO2023.1 创建一个新的工程 输入项目名称和地址,下面那个选项为是否…

Web开发7:Git版本控制

在开发中,版本控制是一个不可或缺的工具。它能够帮助开发者跟踪和管理代码的变化,协同工作,并且有效地处理代码的冲突。其中,Git是最流行和广泛使用的版本控制系统之一。在本篇文章中,我们将深入探讨Git版本控制的基础…

2024年,AI 掀起数据与分析市场的新风暴

2024 年伊始,Kyligence 联合创始人兼 CEO 韩卿在其公司内部的飞书订阅号发表了多篇 Rethink Data & Analytics 的内部信,分享了对数据与分析行业的一些战略思考,尤其是 AI 带来的各种变化和革命,是如何深刻地影响这个行业乃至…

基于SSM的高校班级同学录网站设计与实现(有报告)。Javaee项目,ssm项目。

演示视频: 基于SSM的高校班级同学录网站设计与实现(有报告)。Javaee项目,ssm项目。 项目介绍: Javaee项目,采用M(model)V(view)C(controller&…

leetcode 28.找出字符串中第一个匹配项的下标(python版)

需求 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。 如果 needle 不是 haystack 的一部分,则返回 -1 。 示例 1: 输入:haystack…

网工内推 | 网络安全工程师专场,大平台,六险一金

01 汽车之家 招聘岗位:高级网络安全工程师 职责描述: 1、负责公司网站、系统与产品的漏洞扫描、渗透测试与安全评估工作; 2、负责公司安全系统与安全设备的运维,负责公司网络安全监控管理; 3、负责公司安全事件的应急…

FileZilla 的安装与使用

目录 一. FileZilla 是什么二. FileZilla 的安装1. 下载 FileZilla2. 安装 三. FileZilla 的使用 一. FileZilla 是什么 FileZilla 是一个免费的开源 FTP(文件传输协议)客户端软件,用于在计算机之间传输文件。它提供了一个直观的用户界面&am…

sql注入,布尔盲注和时间盲注,无回显

布尔盲注 通过order by分组可以看到,如果正确会i显示you are in,错误则无任何提示,由此可以判断出,目前只显示对错,此外前端不会显示任何数据 也就是说,目前结果只有两种,在这种只有两种变量的…

Unity 自动轮播、滑动轮播

如图所示,可设置轮播间隔,可左右滑动进行轮播 1.在UGUI创建个Image,添加自动水平组件 2.添加并配置脚本 3.代码如下,都有注释 using UnityEngine; using UnityEngine.UI;public class IndicatorManager : MonoBehaviour {public …

鸿蒙不再兼容安卓,那么鸿蒙开发者是否会大增?

华为的纯血版鸿蒙已出现。紧接着各大厂商都纷纷加入原生应用开发当中,其中包括支付宝、京东、美团等一线大厂,200 多应用厂商正在加速开发鸿蒙原生应用。鸿蒙生态设备数量仅历时 5 个月即从 7 亿增长至 8 亿。 而鸿蒙的开发不止应用层,它是以…

6.3 内存池模式

Bruce Powel Douglass大师介绍-CSDN博客https://blog.csdn.net/ChatCoding/article/details/134665868嵌入式软件开发从小工到专家-CSDN博客https://blog.csdn.net/ChatCoding/article/details/135297955C嵌入式编程设计模式源码-CSDN博客https://blog.csdn.net/ChatCoding/art…

根文件系统之initramfs

问题抛出: 1.系统启动时文件系统功能的实现 1.bootloader支持 1.uboot启动 ——典型的arm设备的选择。 情景1:使用initrd或initramfs,内核和根文件系统作为不同镜像时,uboot负责提供启动参数;加载根文件系统到内存…