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

本文主要是介绍简单好用的深度学习论文绘图专用工具包--Science Plot,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

喜欢就关注我们吧!

惊闻昨天美国封禁了哈工大、哈工程两所高校的 Matlab 使用权,很多人担忧禁用范围会进一步扩大到我国多所高校。Matlab在科研仿真,以及绘图上是一个非常方便的工具,如果一旦禁用,是不是我们就不好绘制出好看的科研图表了呢。非也,今天我们一起欣赏一个开源的、非常炫酷的 matolotlib 风格的绘图库。

喜欢的话,记得帮我们转发一下哦~

对于一篇优质的论文而言,除了好的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。

AIZOO,打造中国最大的深度学习和人工智能社区,欢迎关注我们,也欢迎添加下方小助手的微信,邀请您加入我们的千人深度学习爱好者社区。

欢迎扫描下方的二维码添加小助手微信,邀请您加入我们的微信交流群。

群里有多位清北复交的大佬和众多深度学习er在一起愉快的交流技术,欢迎你的加入哦。

 添加小助手微信,邀您进AIZOO技术交流群

听说点在看的,论文都会发到手软~

这篇关于简单好用的深度学习论文绘图专用工具包--Science Plot的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/999455

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

AI绘图怎么变现?想做点副业的小白必看!

在科技飞速发展的今天,AI绘图作为一种新兴技术,不仅改变了艺术创作的方式,也为创作者提供了多种变现途径。本文将详细探讨几种常见的AI绘图变现方式,帮助创作者更好地利用这一技术实现经济收益。 更多实操教程和AI绘画工具,可以扫描下方,免费获取 定制服务:个性化的创意商机 个性化定制 AI绘图技术能够根据用户需求生成个性化的头像、壁纸、插画等作品。例如,姓氏头像在电商平台上非常受欢迎,

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

csu 1446 Problem J Modified LCS (扩展欧几里得算法的简单应用)

这是一道扩展欧几里得算法的简单应用题,这题是在湖南多校训练赛中队友ac的一道题,在比赛之后请教了队友,然后自己把它a掉 这也是自己独自做扩展欧几里得算法的题目 题意:把题意转变下就变成了:求d1*x - d2*y = f2 - f1的解,很明显用exgcd来解 下面介绍一下exgcd的一些知识点:求ax + by = c的解 一、首先求ax + by = gcd(a,b)的解 这个

hdu2289(简单二分)

虽说是简单二分,但是我还是wa死了  题意:已知圆台的体积,求高度 首先要知道圆台体积怎么求:设上下底的半径分别为r1,r2,高为h,V = PI*(r1*r1+r1*r2+r2*r2)*h/3 然后以h进行二分 代码如下: #include<iostream>#include<algorithm>#include<cstring>#include<stack>#includ

usaco 1.3 Prime Cryptarithm(简单哈希表暴搜剪枝)

思路: 1. 用一个 hash[ ] 数组存放输入的数字,令 hash[ tmp ]=1 。 2. 一个自定义函数 check( ) ,检查各位是否为输入的数字。 3. 暴搜。第一行数从 100到999,第二行数从 10到99。 4. 剪枝。 代码: /*ID: who jayLANG: C++TASK: crypt1*/#include<stdio.h>bool h

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl