推荐一个matplotlib的格式神器

写在前面

前一段时间看到有推送说一个哈佛大学的小哥设计了一套适合于sci论文的matplotlib模板,使用这些模板直接可以绘制出sci风格的图表,所以自己试了一下,感觉还不错!

其实我们大多数人写论文的时候都会遇到需要做图的情况,如果使用Python绘制这些图像基本都是绕不开matplotlib这个库的,这个库的名字也是来源于MATLAB语言,这意味着可能用MATLAB绘制图像也是这个风格的,距离科研论文的图像总是觉得差了些什么。而origin、SPSS这些软件需要购买,破解软件装起来也麻烦,而且软件本身很重,用于普通的做图总是觉得会有一些麻烦。

B站上面的一个博主“毕导”有一期视频讲如何写毕业论文的时候说过这么一句话,论文的图像的审美标准只有一个字——丑。而我们使用matplotlib绘图时,虽然已经很丑了,但是还是丑的差了点什么。这个模板就可以很有效的节省我们“美化”图片时的调整时间。

7.png

闲话少说开始今天的正文。

安装

方法一

首先这个项目已经开源到github上面了,地址是这里,里面详细介绍了如何装这个库以及如何使用。安装其实很简单哈,就是一行命令就可以了:

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

但是呢,我没有这么干。为什么呢?因为我们都知道,github最大的特点就是——慢!下载一个东西真的比龟速还要龟速。那有什么解决办法吗,我们中国版的github,码云(注意不是马云)很好的帮我们解决了这个问题。我们只需要在码云里面点击“从github导入仓库

image

然后把刚才复制的连接复制进去点确定就可以自动将github上面的仓库导入到码云上面了

image

之后我们再用git去安装就会快很多

pip install git+你的项目码云地址

方法二

当然上面一种方法是可以的,不过我本人是用的第二种方法:

首先按照上面的步骤,把github上面的仓库导入到码云上。

之后直接git clone 项目码云地址把整个仓库下载下来

然后新建一个python文件,运行下面的代码:

import matplotlib as mpl
print(mpl.get_configdir())

这样就可以看到你的matplotlib目录了,基本上都是当前用户文件夹下的.matplotlib文件夹,比如说Mac用户就是/Users/用户名/.matplotlib

然后打开那个文件夹,你就可以看到这个stylelib文件夹了(如果没有的话就自己新建一个)

image

然后把我们git clone下来的文件夹里面的所有.style,像我这样

image

这样我们就算安装完了

使用

安装完了我们当然是要迫不及待的试一下了!

github的文档里写的很清楚怎么用这个style

你可以这样:

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

也可以这样

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

这个时候我们就可以用官方事例中的一部分来实验一下了:

import numpy as np
from matplotlib import pyplot as plt


def model(x, p):
    return x ** (2 * p + 1) / (1 + x ** (2 * p))


x = np.linspace(0.75, 1.25, 201)
with plt.style.context(['science']):
    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 ($\mu$A)')
    ax.autoscale(tight=True)
    fig.savefig('figures/fig1.pdf')
    fig.savefig('figures/fig1.jpg', dpi=300)

好的,运行之后,我们回看到这个错误:

RuntimeError: Failed to process string with tex because latex could not be found

意思是什么呢?latex找不到。latex在前面的推送中有提到过,这是一种论文的排版语言。当然你一定会想到,那我pip install latex不就行了吗,我自己当然也试过了!可是依然会报这个错误

这个时候我就有一点心态崩了,百度了一下说不是说你的Python没有安装latex,而是你的电脑环境里没有latex。这就很搞笑了,难道我为了画个图还要千辛万苦的安装latex?所以我给这个github写了一个issue说了这个问题

这个作者回复的非常快,不过情况有点尴尬:

image

大概意思就是说,这个问题我已经在FAQ(问答系统)里面回答过了,你能不能先看看啊!这就很尴尬,这件事情告诉我们,给github留言之前,一定要先看看你要问的有没有在FAQ里面已经出现过了,不然很容易被作者骂。

怎么解决这个问题呢?其实很简单,我们在style里面加一个no-latex就可以了,像这样:

import numpy as np
from matplotlib import pyplot as plt


def model(x, p):
    return x ** (2 * p + 1) / (1 + 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 ($\mu$A)')
    ax.autoscale(tight=True)
    fig.savefig('figures/fig1.pdf')
    fig.savefig('figures/fig1.jpg', dpi=300)

执行这个代码,我们就可以顺理成章的拿到我们想要的结果了:

image

是不是特别的SCI!!

我们来对比一下加style和不加的区别:


image

我们可以看到变化是非常明显的,首先最明显的区别在于字体,这个style将字体设置为了论文中常用的Times New Roman,并且字号有了很大的提高,并且进行了加粗。
在图形这边,首先线条的颜色饱和度变得更高了,而且添加了横纵坐标的刻度。总理来说,非常符合论文图标的审美哈哈哈,就是那种,画出来就很SCI的感觉

注意事项

在使用matplotlib时我们经常需要使用中文,但是很遗憾哈,因为这个style是配置好了字体的,所以我们不能再自己去配置中文字体了。所以这个还是比较适合发英文论文的哈

写在最后

Python目前已经成为了一种比较常用的数据分析工具,这些style其实看起来没有那么高级,只是帮我们做了调节图像颜色配置等等的工作,真正的重点还是我们怎么去总计分析数据,如何去绘图,而调整图表只是数据分析中的一小部分罢了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,258评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,335评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,225评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,126评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,140评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,098评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,018评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,857评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,298评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,518评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,400评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,993评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,638评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,661评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352