简单好用的深度学习论文绘图专用工具包:Science Plot

2020 年 8 月 29 日 极市平台
↑ 点击 蓝字  关注极市平台

来源丨AIZOO
编辑丨极市平台

极市导读

 

本文带来了一款轻量化绘图工具包——SciencePlots,支持多个种类和配色的图表制作,赶快体验吧!


对于一篇优质的论文而言,除了好的idea之外,好的绘图可以给人眼前一亮的感觉,让审稿人和读者一下子就可以记住你的论文和实验结果,为论文接收和被他人引用创造机会。许多科研工作者大部分都是有好的idea,也有好的实验结果,但是在表达和汇总自己的实验结果方面就显得力不从心,因此经常会有作者收到review之后疯狂质疑审稿人到底有没有读过自己的文章......


不得不说随着顶会投稿数量的爆炸性增长,审稿人力不从心,使得一部分审稿人的水平确实较之前有所降低,但是好的论文配图会增加论文脱颖而出的可能。之前的配图一般使用的是matplotlib,ggplot2,MATLAB等这样的绘图包,然而matplotlib默认设置绘制出来的图总让人感觉没有那么专业,ggplot2的图确实优美但是R语言又比较小众,MATLAB...(因为川建国同志,可能以后我们就不能用MATLAB绘图发表论文了)。在这种情况下, SciencePlots 就是非常好的一个选择。

SciencePlots是一个专门为科研论文打造的轻量化的绘图工具包,安装SciencePlots最简单的方式是使用pip,使用的指令为:
  
  
    
# 安装最新版
pip install git+https://github.com/garrettj403/SciencePlots.git

# 安装稳定版
pip install SciencePlots

安装完成后,使用SciencePlots也非常简单,只需要导入matplotlib工具包,选择相应的style即可。例如,如果想要给Science投稿,那么只需要引入下列的主题:
  
  
    
import matplotlib.pyplot as plt
plt.style.use('science')

需要使用IEEE的格式,则是
  
  
    
import matplotlib.pyplot as plt
plt.style.use(['science','ieee'])

但是需要注意的是,IEEE的格式会覆盖一些Science的风格,例如列宽,行距等。

接下来,用一些例子来展示一下SciencePlots的用法和具体的效果,首先,引入一些初始的数据并进行绘制。
   
   
     
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)
如果不使用SciencePlots,使用matplotlib的绘制代码:
   
   
     
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('fig1.jpg', dpi=300)
绘制结果如下:

无论是形状,字体看上去都并不专业。如果我们稍加改造,使用SciencePlots中Science的提交格式,上面的图片就会变为:

无论是坐标轴的刻度线,字体都变得高大上了很多。具体的做法也非常简单,只需要一行简单的with语句就可以完成字体,坐标轴,图例等诸多任务,代码为:

   
   
     
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)

OK,SCI中了,现在我们需要投个CVPR什么的了。IEEE要求黑白印刷出来的文章也需要能够区分颜色。之前我们还需要查IEEE颜色表什么的,但是现在,类似的,我们只需要修改一下with语句,就可以得到IEEE样式的:
   
   
     
with plt.style.context(['science', 'ieee']): fig, ax = plt.subplots() for p in [10, 20, 50]:      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/fig2.pdf')         fig.savefig('figures/fig2.jpg', dpi=300)

图片的效果则变为了:

除了二维的线图(line plot),散点图同样可以绘制:

   
   
     
with plt.style.context(['science', 'scatter']): fig, ax = plt.subplots(figsize=(4,4)) ax.plot([-2, 2], [-2, 2], 'k--') ax.fill_between([-2, 2], [-2.2, 1.8], [-1.8, 2.2], color='dodgerblue', alpha=0.2, lw=0) for i in range(7): x1 = np.random.normal(0, 0.5, 10) y1 = x1 + np.random.normal(0, 0.2, 10) ax.plot(x1, y1, label=r"$^\#${}".format(i+1)) ax.legend(title='Sample', loc=2) ax.set_xlabel(r"$\log_{10}\left(\frac{L_\mathrm{IR}}{\mathrm{L}_\odot}\right)$") ax.set_ylabel(r"$\log_{10}\left(\frac{L_\mathrm{6.2}}{\mathrm{L}_\odot}\right)$") ax.set_xlim([-2, 2]) ax.set_ylim([-2, 2]) fig.savefig('figures/fig3.pdf') fig.savefig('figures/fig3.jpg', dpi=300)

图片结果如下:


除了不同样式,不同杂志之外,SciencePlots同样提供了不同风格的配色方案,高对比度(high-vis)风格。

颜色明快(bright)风格:

活泼配色(vibrant)风格:

没那么花哨(muted)的风格:

复古(retro)的风格:


最有意思的是,不知道是不是怕从Apple Store下架,SciencePlots还加了一个黑色模式(dark_background)。


想要了解更多有关SciencePlots的内容,可以去SciencePlots的官方Github了解更多。
Github链接:
https://github.com/garrettj403/SciencePlots


推荐阅读



还有2 天!火焰/摔倒/头盔识别等四个赛题即将截止报名


添加极市小助手微信(ID : cvmart2),备注:姓名-学校/公司-研究方向-城市(如:小极-北大-目标检测-深圳),即可申请加入极市目标检测/图像分割/工业检测/人脸/医学影像/3D/SLAM/自动驾驶/超分辨率/姿态估计/ReID/GAN/图像增强/OCR/视频理解等技术交流群:每月大咖直播分享、真实项目需求对接、求职内推、算法竞赛、干货资讯汇总、与 10000+来自港科大、北大、清华、中科院、CMU、腾讯、百度等名校名企视觉开发者互动交流~

△长按添加极市小助手

△长按关注极市平台,获取 最新CV干货

觉得有用麻烦给个在看啦~   
登录查看更多
1

相关内容

Matplotlib是Python最著名的数据可视化工具包,有了它,一些统计上常用的图形如折线图、散点图、直方图等都可以用简单的几行Python代码实现。
专知会员服务
20+阅读 · 2020年10月2日
【干货书】Python高级数据科学分析,424页pdf
专知会员服务
114+阅读 · 2020年8月7日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
还在修改博士论文?这份《博士论文写作技巧》为你指南
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
【新书】Python数据科学食谱(Python Data Science Cookbook)
专知会员服务
114+阅读 · 2020年1月1日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
Python奇淫技巧,5个数据可视化工具
机器学习算法与Python学习
7+阅读 · 2019年4月12日
Python数据可视化2018:为什么这么多的库?
Python程序员
4+阅读 · 2019年1月2日
码农日常工具推荐
架构文摘
4+阅读 · 2017年9月26日
利用python操作Excel教程
Python技术博文
4+阅读 · 2017年9月13日
高效使用 Python 可视化工具 Matplotlib
Python开发者
8+阅读 · 2017年7月3日
Anomaly Detection with Deep Perceptual Autoencoders
Arxiv
0+阅读 · 2020年10月15日
Arxiv
0+阅读 · 2020年10月13日
Arxiv
0+阅读 · 2020年10月13日
Arxiv
4+阅读 · 2019年12月2日
Arxiv
3+阅读 · 2019年3月1日
VIP会员
相关VIP内容
专知会员服务
20+阅读 · 2020年10月2日
【干货书】Python高级数据科学分析,424页pdf
专知会员服务
114+阅读 · 2020年8月7日
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
还在修改博士论文?这份《博士论文写作技巧》为你指南
Python导论,476页pdf,现代Python计算
专知会员服务
259+阅读 · 2020年5月17日
【高能所】如何做好⼀份学术报告& 简单介绍LaTeX 的使用
【新书】Python数据科学食谱(Python Data Science Cookbook)
专知会员服务
114+阅读 · 2020年1月1日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
相关资讯
Python奇淫技巧,5个数据可视化工具
机器学习算法与Python学习
7+阅读 · 2019年4月12日
Python数据可视化2018:为什么这么多的库?
Python程序员
4+阅读 · 2019年1月2日
码农日常工具推荐
架构文摘
4+阅读 · 2017年9月26日
利用python操作Excel教程
Python技术博文
4+阅读 · 2017年9月13日
高效使用 Python 可视化工具 Matplotlib
Python开发者
8+阅读 · 2017年7月3日
Top
微信扫码咨询专知VIP会员