前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SCI论文配色-matplotlib分类柱状图绘制

SCI论文配色-matplotlib分类柱状图绘制

作者头像
DataCharm
发布2021-02-22 15:07:39
5.8K0
发布2021-02-22 15:07:39
举报

01. 引言

今天在查看资料时,看见一篇SCI论文的配图十分抢眼,图表的整体绘制不是很难,但整个配色还是瞬间让图表“高大上”起来,如下:

(这种配色真的适合发sci论文

)

在使用ggplot2进行这类图表颜色绘制时,直接调用ggsci包就可以进行颜色设计(Matplotlib在这点上还存在明显不足啊

)。但抱怨归抱怨,接下来还是使用python-matplotlib 对上图进行仿制。

02. 基本绘制

python-matplotlib 绘制分类柱状图的步骤相对比较简单,即ax.bar()的灵活使用即可,下面为没有任何定制化绘制的默认绘制代码:

代码语言:javascript
复制
import numpy as np
import matplotlib.pyplot as plt

plt.rcParams['font.family'] = "Times New Roman"

#data
labels = ['L1', 'L2', 'L3', 'L4', 'L5']
data_a = [20, 34, 30, 35, 27]
data_b = [25, 32, 34, 20, 25]
data_c = [12, 20, 24, 17, 16]

x = np.arange(len(labels))
width = .25
#plots
fig,ax = plt.subplots(figsize=(5,3),dpi=200)
bar_a = ax.bar(x-width/2, data_a,width,label='category_A')
bar_b = ax.bar(x+width/2, data_b, width,label='category_B')
bar_c = ax.bar(x+width*3/2, data_c,width,label='category_C')
ax.set_xticks(x+.1)
ax.set_xticklabels(labels,size=10)
ax.legend()    
text_font = {'size':'14','weight':'bold','color':'black'}
ax.text(.03,.93,"(a)",transform = ax.transAxes,fontdict=text_font,zorder=4)
ax.text(.87,-.08,'\nVisualization by DataCharm',transform = ax.transAxes,
        ha='center', va='center',fontsize = 5,color='black',fontweight='bold',family='Roboto Mono')
plt.savefig(r'E:\Data_resourses\DataCharm 公众号\Python\学术图表绘制\bar_class_prior.png',width=5,height=3,
            dpi=900,bbox_inches='tight')
plt.show()

结果如下:

可以看出,默认的matplotlib的配色真的是·······

,接下来,我们通过定制化绘制使其看起来舒服同时也符合SCI期刊配色要求。

03. SCI配色设计

我们使用 FastStone Capture 软件对所需颜色进行吸取,然后对刻度、轴脊梁、字体等进行设计,具体代码如下:

代码语言:javascript
复制
#构造数据
labels = ['L1', 'L2', 'L3', 'L4', 'L5']
data_a = [20, 34, 30, 35, 27]
data_b = [25, 32, 34, 20, 25]
data_c = [12, 20, 24, 17, 16]

x = np.arange(len(labels))
width = .25

plt.rcParams['font.family'] = "Times New Roman"
#plots
fig,ax = plt.subplots(figsize=(5,3),dpi=200)
bar_a = ax.bar(x-width/2, data_a,width,label='category_A',color='#130074',ec='black',lw=.5)
bar_b = ax.bar(x+width/2, data_b, width,label='category_B',color='#CB181B',ec='black',lw=.5)
bar_c = ax.bar(x+width*3/2, data_c,width,label='category_C',color='white',ec='black',lw=.5)

#定制化设计
ax.tick_params(axis='x',direction='in',bottom=False)
ax.tick_params(axis='y',direction='out',labelsize=8,length=3)
ax.set_xticks(x+1)
ax.set_xticklabels(labels,size=10)
ax.set_ylim(bottom=0,top=40)
ax.set_yticks(np.arange(0, 50, step=5))

for spine in ['top','right']:
    ax.spines[spine].set_color('none')
    
ax.legend(fontsize=7,frameon=False)

text_font = {'size':'14','weight':'bold','color':'black'}
ax.text(.03,.93,"(a)",transform = ax.transAxes,fontdict=text_font,zorder=4)
ax.text(.87,-.08,'\nVisualization by DataCharm',transform = ax.transAxes,
        ha='center', va='center',fontsize = 5,color='black',fontweight='bold',family='Roboto Mono')
plt.savefig(r'E:\Data_resourses\DataCharm 公众号\Python\学术图表绘制\bar_class.png',width=5,height=3,
            dpi=900,bbox_inches='tight')
plt.show()

结果如下:

是不是瞬间高大上了

,肯定会有小伙伴问了,我不知道SCI颜色具体怎么设置啊?不是有ggsci包和 FastStone Capture软件吗?谁让matplotlib在这方面还没有很好的颜色包呢

。接下来,我们直接选择Science色系的前三个颜色代码直接填充我们构造的数据,更改代码也是只单单的一行,如下:

代码语言:javascript
复制
bar_c = ax.bar(x+width*3/2, data_c,width,label='category_C',color='#008B45',ec='black',lw=.5)

此外,我们还添加了网格线,感觉还不错,效果如下:

04. 总结

本期的推文整体上很简单(很多小伙伴希望推出些基础、实用的绘图教程

)主要还是学术图表的绘制,这里使用了比较适合SCI论文的颜色搭配。还是希望能够帮助大家,无论是商业图表还是学术图表

,当然了,如果大家有知道matplotlib比较优秀的配图包,也可以后台留言或者直接进群讨论啊!!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DataCharm 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 01. 引言
  • 02. 基本绘制
  • 03. SCI配色设计
  • 04. 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档