专栏首页数据 学术 商业 新闻三种!!出版级论文配图绘制方法大汇总

三种!!出版级论文配图绘制方法大汇总

今天这篇推文小编给大家接单介绍下如何使用Python-Matplotlib库一步步绘制可以用于出版的图表(Publication Ready Plots),接下来,将通过一个具体的小例子给大家讲解一下绘制流程,当然,最后还会介绍现成的第三方包绘制的绘制方法。

Python-Matplotlib 绘制

首先,我们通过生成虚拟数据,使用matplotlib默认的颜色和图表样式进行绘制,如下:

import numpy as np
import matplotlib.pyplot as plt
# 构建数据
def model(x, p):
    return x ** (2 * p + 1) / (1 + x ** (2 * p))
x = np.linspace(0.75, 1.25, 201)
# 可视化绘制
fig, ax = plt.subplots(figsize=(4,3),dpi=200)
for p in [10, 15, 20, 30, 50, 100]:
    ax.plot(x, model(x, p), label=p)

Default Plots Style Of matplotlib

接下来,小编通过一步步对其绘图属性进行更改,使其符合出版级别的要求。

  1. 「设置全局图表属性变量」

这一步对于有绘制较多图表的小伙伴有很大帮助,通过在绘制图表之前通过如下代码,分别更改字体、字体大小、线宽、刻度等多个常见属性,如下(这里只更改所需内容):

plt.rcParams['font.family'] = 'Times New Roman'
plt.rcParams['font.size'] = 18
plt.rcParams['axes.linewidth'] = 2

以上分别设置全局字体为Times New Roman,字体大小为18,轴宽度为2。当然,需要对个别字体进行设置的,可通过局部更改属性即可。更多全局变量属性可参考:rcParams[1]

2. 「移除轴脊(spines)」

有的图表要求对部分轴脊(通常是上、右)进行去除,可通过如下代码实现:

ax.spines['right'].set_visible(False)
ax.spines['top'].set_visible(False)

Example Of Remove spines

3. 「刻度属性(Tick Parameters)」

刻度属性设置可是小编每次使用matplotlib绘制图表使用最多的语句了,可以设置刻度长短、粗细、方向、刻度标签等。下面只是对部分属性进行设置:

# 通过如下代码添加副刻度
from matplotlib.pyplot import MultipleLocator
fig, ax = plt.subplots(figsize=(4,3),dpi=200)
#修改次刻度
yminorLocator = MultipleLocator(.25/2) #将此y轴次刻度标签设置为0.1的倍数
xminorLocator = MultipleLocator(.25/2)
ax.yaxis.set_minor_locator(yminorLocator)
ax.xaxis.set_minor_locator(xminorLocator)
ax.tick_params(which='major', length=5, width=1.5, direction='in', top='on',right="on")
ax.tick_params(which='minor', length=3, width=1,direction='in', top='on',right="on")

Example Of Tick Parameters

更多tick_params参数,可参考:tick_params[2]

4. 「Axis labels」通过如下代码添加Axis labels:

ax.set_xlabel('Voltage (mV)', fontsize=13,labelpad=5)
ax.set_ylabel('Current ($\mu$A)', fontsize=13,labelpad=5)

其中labelpad=5 用于调整轴标签和刻度标签之间的距离

5. 「汇总」这一步,我们将之前全部的设置都应用到之前默认的Matplotlib绘制的图表上,代码如下:

plt.rcParams['font.family'] = 'Times New Roman'
plt.rcParams['font.size'] = 12
plt.rcParams['axes.linewidth'] = 1
# 设置图例标题大小
plt.rcParams['legend.title_fontsize'] = 9
fig, ax = plt.subplots(figsize=(4,3),dpi=200)
colors = ["#0073C2","#EFC000","#868686","#CD534C","#7AA6DC","#003C67"]
for p,c in zip([10, 15, 20, 30, 50, 100],colors):
    ax.plot(x, model(x, p), color=c,label=p)
#修改次刻度
yminorLocator = MultipleLocator(.25/2) #将此y轴次刻度标签设置为0.1的倍数
xminorLocator = MultipleLocator(.25/2)
ax.yaxis.set_minor_locator(yminorLocator)
ax.xaxis.set_minor_locator(xminorLocator)
#修改刻度属性
ax.tick_params(which='major', length=5, width=1.5, direction='in', top='on',right="on")
ax.tick_params(which='minor', length=3, width=1,direction='in', top='on',right="on")
# 添加axis label
ax.set_xlabel('Voltage (mV)', fontsize=13,labelpad=5)
ax.set_ylabel('Current ($\mu$A)', fontsize=13,labelpad=5)
#添加网格
ax.grid(which='major',ls='--',alpha=.8,lw=.8)
#添加图例
ax.legend(fontsize=8,loc='upper left',title="Order")
# 添加文本信息
ax.set_title("Default Plot Style Of Matplotlib",fontsize=14,pad=10)
ax.text(.87,.06,'\nVisualization by DataCharm',transform = ax.transAxes,
        ha='center', va='center',fontsize = 5)

Example Of Customize set charts in Matplotlib

第三方库绘制

这一部分我们使用Python绘制出版级别的图表的优秀第三方库:SciencePlots和proplot,前者是提供多个matplotlib绘图主题以应对不同期刊绘制要求,后者则是对Matplotlib进行再一次的加工封装,使其绘制复杂严谨的科学图表不再局限于Matplotlib本身的局限性。接下来,我将使用这两个库对其上述数据进行可视化绘制。

SciencePlots 库绘制

这个库可谓是Python绘制出版级别图表的绝对利器,使用只需直接调用主题即可,如下:

with plt.style.context(['science','grid','no-latex']):
    fig, ax = plt.subplots(figsize=(4,3),dpi=200)
    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 ($\mu$A)')
    ax.set(title="Scienceplots Plot Style Example Of Matplotlib")
    ax.autoscale(tight=True)

Example Of SciencePlots style

可以看出:只需开始之前调用绘图主题,就可以省去Matplotlib繁琐的定制化操作,而且该库还上线了Nature图表主题(style for Nature articles),更多详细内容可参考:SciencePlots 库官网[3]

proplot库绘制

这个库之前小编也有介绍过:还在对Matplotlib繁琐的图层设置感到烦恼!?快来看看这个Python绘图工具包吧,这里,我们使用该库绘制,如下:

import proplot as plot
fig, ax = plot.subplots(figsize=(4,3.5),dpi=100)
for p in [10, 15, 20, 30, 50, 100]:
    ax.plot(x, model(x, p), label=p)
ax.format(title='Example Of Proplot Plot Style',abc=True, abcloc='ur', abcstyle='(A)',
          xlabel='Voltage (mV)', ylabel='Current ($\mu$A)',
          xtickdir='in',ytickdir="in",xtickloc="both",ytickloc="both",xgridminor=False,
          ygridminor=False
)
ax.legend(ncols=1)

Example Of Proplot make

可以看出:proplot库实现了对matplotlib的再一次封装,简化其繁琐的定制化绘制过程,同时也对matplotlib 默认的刻度、网格等图表属性进行了修改,使其更加符合出版级别的要求。更多内容可参考:proplot库官网[4]

总结

今天这边推文,小编汇总了三种Python绘制出版级别图表的方法:

  • matplotlib:一步步定制化操作。自由度较高,但需熟悉较多的绘图函数和参数熟悉。
  • SciencePlots :提供较多的符合各种期刊要求的matplotlib绘图主题,使用简单。但对要求高的绘制需求满足度较低。
  • proplot:对matplotlib进行了封装,简化绘图过程,提供符合出版级别的图层熟悉设置,但可能需要你重新熟悉一整个绘图语句。

综上,大家可以合理的学习自己的工具绘制出版级别的论文配图哈~~

参考资料

[1]

Matplotlib.rcParams属性: https://matplotlib.org/stable/api/matplotlib_configuration_api.html?highlight=rcparams#matplotlib.rcParams。

[2]

tick_params详细参数: https://matplotlib.org/stable/api/_as_gen/matplotlib.axes.Axes.tick_params.html?highlight=tick_params#matplotlib.axes.Axes.tick_params。

[3]

SciencePlots科学图表主题介绍: https://github.com/garrettj403/SciencePlots。

[4]

proplot详细介绍: https://proplot.readthedocs.io/en/latest/index.html。

本文分享自微信公众号 - DataCharm(shujumeili),作者:宁俊骐

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-07-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • NLP快速入门:手把手教你用wordcloud做词云

    导读:在上一章节介绍在Python环境下调用HanLP包进行分词的基础上,本文将介绍如何使用wordcloud绘制词云。尽管目前市面上已经有很多成熟的在线交互词...

    寒树Office与RPA
  • Sketchup Pro 2018破解版 附安装教程

    草图大师2018是谷歌公司推出的一款环保型3D建模软件,英文全称又叫做sketchup pro 2018,用户可以从描绘线条和形状开始,推拉平面即可将其转换为3...

    用户6838888
  • 开发工具总结(7)之多年珍藏的Android开发必备网站和工具

    版权声明:本文为博主原创文章,未经博主允许不得转载。https://www.jianshu.com/p/781c1b56bc5b

    AWeiLoveAndroid
  • 《软件项目管理(第二版)》第 6 章——项目质量管理 重点部分总结

    本文是对《软件项目管理(第二版)》第 6 章——项目质量管理的重点部分总结。《软件项目管理(第二版)》计划共十个章节,其他章节的内容请前往专栏内查看。

    白鹿第一帅
  • 思维导图——让你的灵感思如泉涌!!!

    今天想跟大家聊聊思维导图! ▼▼▼▼▼ ▌思维导图是日常写作、案例分析、商务汇报等场合常用的逻辑梳理工具,它可以更加高效的展现我们思维方式、整理分散的创意、想法...

    数据小磨坊
  • 性能报告之HTML5 性能测试报告 <大屏版>

    HTML5 作为当前“最火”的跨平台、跨终端(硬件)开发语言,越来越受到前端开发者 的重视,无论是 PC 端还是当前“火热”的移动端,其前端开发人员的占比均越来...

    高楼Zee
  • 哪些 Python 库让你相见恨晚?

    最近沉迷于github,无法自拔,看到各种各样新奇又实用的第三方库。网络上有很多python库的排名、汇总,但总觉得不够具体生动。

    公众号---人生代码
  • C语言和C++本质区别在哪?

    疑惑一 做网站前端开发需要具备哪些基础知识? 做网站开发分为前端和后台,如果从事前端开发需要学习哪些基础知识呢?现在为大家总结一下。 html: ...

    程序员互动联盟
  • maftools|TCGA肿瘤突变数据的汇总,分析和可视化

    之前介绍了使用maftools | 从头开始绘制发表级oncoplot(瀑布图) R-maftools包绘制组学突变结果(MAF)的oncoplot或者叫“瀑布...

    生信宝典
  • 学生时代,我写过的那些“项目”

    今天,我看了一遍我在github上开源的“项目”,本来是想删掉这些开源demo的,因为github总是发邮件提醒,xx项目报出漏洞,让我修复,就是更新依赖的ja...

    Java艺术
  • Excel催化剂图表系列之品味IBCS瀑布图观察企业利润构成

    千呼万唤出来的Excel新图表,真的好用么?真的够用么?从来对图表有点追求的人都很不屑于用Excel原生图表出来的效果,颜色丑,看多两眼就显呆板,就连新出的一堆...

    Excel催化剂
  • 全了!!表格可视化制作技巧大汇总~~

    今天小编就来汇总一下R中表格(Table) 绘制方法,让你的数据展示不再单一。这里主要包括单一表格绘制和可视化+表格 两个方面。虽然表格制作可能Excel更擅长...

    DataCharm
  • 史上最好的思维导图中文教程

    用户1756920
  • 『Demo』你想开发的页面特效第二期~

    这期极乐大叔继续将小程序内各种页面效果实现方法聚合了一下,以便大家能够迅速而方便的使用。 图表类(折线图,统计图) 图表类:折线图,柱状图,K线,分时图 生成二...

    极乐君
  • 【阅读清单】系列文章清单列表(一)

    Centreon+Nagios实战 https://cloud.tencent.com/developer/inventory/272

    云加社区
  • 词云图,看过没做过?快来,教你秘籍

    今天我们来说一说可视化的问题,如果这个时候我们要对频数进行可视化的话,我们首先想到的应该是一个什么样子的图形呢?很多人可能会说是柱状图。还有一些科研喵们,看过我...

    用户6317549
  • 新书《R语言编程—基于tidyverse》信息汇总

    我之前预告过的 R 语言新书,起名为《R语言编程—基于tidyverse》,本书的目的是为了在国内推广 R 语言和 R 语言最新技术。本书非常适合新手 R 语言...

    庄闪闪
  • 数据可视化,我习惯于用这些工具

    可视化之于数据分析流程中的重要意义不言而喻,它往往是体现数据分析报告的决定性一环,图表做的好、涨薪少不了。本文针对在完成数据分析过程中,介绍个人习惯运用的那些数...

    luanhz
  • 【PMP】六、项目进度管理

    规划进度管理是为规划、编制、管理、执行和控制项目进度而制定政策、程序和文档的过程。本过程的主要作用是,为如何在整个项目期间管理项目进度提供指南和方向。

    心跳包

扫码关注云+社区

领取腾讯云代金券