(這種配色真的適合發sci論文)
在使用ggplot2進行這類圖表顏色繪製時,直接調用ggsci包就可以進行顏色設計(Matplotlib在這點上還存在明顯不足啊)。但抱怨歸抱怨,接下來還是使用python-matplotlib 對上圖進行仿製。python-matplotlib 繪製分類柱狀圖的步驟相對比較簡單,即ax.bar()的靈活使用即可,下面為沒有任何定製化繪製的默認繪製代碼:import numpy as npimport matplotlib.pyplot as plt
plt.rcParams['font.family'] = "Times New Roman"
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 = .25fig,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期刊配色要求。我們使用 FastStone Capture 軟體對所需顏色進行吸取,然後對刻度、軸脊梁、字體等進行設計,具體代碼如下: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"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色系的前三個顏色代碼直接填充我們構造的數據,更改代碼也是只單單的一行,如下:bar_c = ax.bar(x+width*3/2, data_c,width,label='category_C',color='#008B45',ec='black',lw=.5)此外,我們還添加了網格線,感覺還不錯,效果如下:
本期的推文整體上很簡單(很多小夥伴希望推出些基礎、實用的繪圖教程)主要還是學術圖表的繪製,這裡使用了比較適合SCI論文的顏色搭配。還是希望能夠幫助大家,無論是商業圖表還是學術圖表,當然了,如果大家有知道matplotlib比較優秀的配圖包,也可以後臺留言或者直接進群討論啊!!為了大家更好的學習交流,DataCharm的學習交流群已經建立,由於群的二維碼連接易失效,可以通過掃面下方二維碼,添加本人微信,做自我介紹啊,要不然我都不知道是誰。我拉你入群。