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

## Python-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


2. 「移除轴脊(spines)」

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


Example Of Remove spines

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

# 通过如下代码添加副刻度
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

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

ax.set_xlabel('Voltage (mV)', fontsize=13,labelpad=5)
ax.set_ylabel('Current ($\mu$A)', fontsize=13,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_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.text(.87,.06,'\nVisualization by DataCharm',transform = ax.transAxes,
ha='center', va='center',fontsize = 5)


Example Of Customize set charts in Matplotlib

## 第三方库绘制

### SciencePlots 库绘制

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

### proplot库绘制

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

## 总结

• 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]

0 条评论

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

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

• ### Sketchup Pro 2018破解版 附安装教程

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

• ### 开发工具总结（7）之多年珍藏的Android开发必备网站和工具

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

• ### 《软件项目管理（第二版）》第 6 章——项目质量管理 重点部分总结

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

• ### 思维导图——让你的灵感思如泉涌！！！

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

• ### 性能报告之HTML5 性能测试报告 <大屏版>

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

• ### 哪些 Python 库让你相见恨晚？

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

• ### C语言和C++本质区别在哪？

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

• ### maftools|TCGA肿瘤突变数据的汇总，分析和可视化

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

• ### 学生时代，我写过的那些“项目”

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

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

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

• ### 全了！！表格可视化制作技巧大汇总~~

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

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

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

• ### 【阅读清单】系列文章清单列表（一）

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

• ### 词云图，看过没做过？快来，教你秘籍

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

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

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

• ### 数据可视化，我习惯于用这些工具

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

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

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