天天看点

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

编者按:发表一篇论文好比西天取经,就算有唐僧那样的好导师,孙悟空那样给力的合作者,不经历九九八十一难也不可能得取真经。上一期的文章我们介绍了3个实用的latex工具,如果利用得当,可以显著提高你写论文的效率。如果说文字是一篇文章的血肉,那么图片则是文章的筋骨,也可以说是一篇文章的门面。出彩的图片无疑会大大增加文章投中的概率。本公众号计划用一系列教程,教你如何利用python画出国际顶级期刊那样的论文数据图。提醒,文末有福利。

常言说熟读唐诗三百首,不会作诗也会吟。要想能随手画出国际顶级期刊那样的图片,对于新手而言首先建议在平时的文献阅读时,养成见到一些非常亮眼的图片能随手保存的习惯。这样在我们需要为自己的文章画图时,就能随时调取我们的宝库,通过模仿来完成一副像模像样的论文图片。

作为举例,小编拿出以前从期刊中保存的相对比较复杂的一副图片,带领大家利用python去重复整个过程。

选取图片模版

本次选取的图片和复制出来的图片如下图,其中上图是从某期刊中截取的一幅比较典型的科研论文数据图,下边的图是用python在jupyter notebook里面重复出来的示意图,由于小编不可能有图片原来的实验数据,只能通过线型自己构造一些数据以供展示。可以看到,除了一些字体,颜色和图片的大小等需要仔细调整的地方,我们比较完美的还原了左边的数据图。下面,就让我们一步一步的跟随小编,看这幅图是如何被重构出来的。

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...
matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

获取实验数据

本次示例只需要用到numpy和matplotlib两个python库,需要提前导入

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

由于没有真实的实验数据,小编根据图中情况自己构造了一些数据

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

得到了初始的图片

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

这个图片看起来和我们想要的相差很大,没有关系,matplotlib是一个非常强大的绘图库,让我们一点一点地去改进我们的图片

更改坐标轴

更改坐标轴的范围

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

plt.xlim()和plt.ylim()语句可以让我们改变x坐标轴和y坐标轴的范围

更改坐标轴的刻度

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

ax是我们前面命名的一个画板对象的名字,如果需要改变坐标轴的刻度,可以通过ax.setxticks()设定x轴的刻度值,同时matplotlib允许我们通过tickparams()方法改变刻度值的一些属性,例如刻度值的朝向,颜色,长度和粗细等。

更改线的颜色

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

ax.plot()里面的color参数可以指定所画图线的颜色,颜色可以用0-1范围内的RGB值来确定。有的时候我们不能确定一个图线用什么样的颜色更协调,这时我们可以去观摩别的优秀期刊上面的图片的配色,然后用取色器拾取其颜色,用在我们的图片中。

设定label

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

matplotlib可以嵌入latex公式,只需要在 r'$$' 的两个$符号中间写入latex代码就可以。这样我们可以很方便的在图片的图例、坐标轴名称等地方嵌入latex公式

设置坐标轴名称

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

增加散点图

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

到此为止,我们的主图已经描绘的差不多了

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

接下来需要的就是分别按照上面描述的方法,把两个子图分别画出来

绘制子图一

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

在绘制子图的过程中,我们用ax1.setxticklabels()来设定刻度值的内容,刻度值并不一定显示实际的数值,而可以显示字符串样式的内容。这样就方便了我们自定义一些非常规的坐标刻度值。同时,我们用ax_1.text()来自定义一些图片内的文字。

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

绘制子图二

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

与子图一的绘制相似,子图二的绘制也比较简单。

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

结合主图和子图

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

在将三幅图结合为一幅图的过程中,我们使用fig.add_axes()命令来为图片添加子图,其中该方法中的四个参数分别是该子图的两个起始地点和宽、高度。通过调整这四个参数我们可以让子图到达我们想要的位置。

最终的效果图如图所示。

matplotlib 显示批量图片_收藏|如何利用python画出令编辑眼前一亮的论文图片(一)...

matplotlib是一个有很强自定义功能的python绘图库,它几乎可以让我们定义任意的东西,画出各种各样的图形,感兴趣的同学可以去下面的官网上面查看官方示例。https://matplotlib.org/3.1.1/tutorials/introductory/sample_plots.html

但同时,这种自定义太强的功能也给我们带来很多困扰,哪怕我们只想实现一个比较简单的功能,如果对matplotlib这个库不是那么熟悉的话,也需要查找半天。而如果画图者本人没有很高的审美的话,就很容易画出一些看上去不是很协调的图片。好在世界上同样有人想到了这一点,他们开发出了plotly这一个能很方便的画出非常美观图形的库和mpltex这个号称可以画出出版社级别图片的库,这两个功能强大的库我们将于接下来的系列教程中予以介绍~

后台回复

画图1

可以获得上述例子源码链接!

记得点击右下 在看 支持我们哦!

继续阅读