2.1 默認圖表
這裡首先設置一組數據,使用matplotlib的默認繪製方法進行圖表繪製,具體數據如下:array([10, 25, 12, 15, 28, 13, 20, 26, 23, 40, 39, 35, 42, 31, 29, 16, 27], dtype=int64)fig,ax = plt.subplots(figsize=(10,5),dpi=200)x = np.arange(0,len(test_data),1)y = test_data['test'].valuesax.plot(x,y)ax.scatter(x[-1],y[-1],s=200,lw=2,zorder=2)ax.set_title('Matplotlib Color Set exercise_01 \n',fontsize=20,color='black')ax.text(.85,-.1,'\nVisualization by DataCharm',transform = ax.transAxes, ha='center', va='center',fontsize = 8.5,color='black')plt.savefig(r'E:\Data_resourses\DataCharm 公眾號\Python\商業圖表繪製\color_set_region.png',width=7,height=4, dpi=900,bbox_inches='tight')這裡使用了ax.plot()和ax.scatter()進行了繪圖,效果如下:
可以看出,圖中無論折線、散點還是刻度等的設置都是比較粗糙的,和"美觀"一點都掛不上鉤。下面就從數據處理、填充面積以及色彩選擇三個方面進行處理,來使這幅圖變得高大上起來。默認數據繪製的折線圖可能不是那麼的平滑,當然,這也是和我們選擇較少的數據有關,要想達到平滑效果,需要對原始數據進行插值處理(Excel中選中圖表右擊,點擊 設置數據系列格式,選擇最後的平滑線 也能完成平滑處理)。python Scipy 包提供了interpolate模塊可以實現對一維二維數據的插值處理,在對一維數據時,interp1d()提供了如nearest、quadradic等多種插值方式,詳細內容大家可以查看官網啊。這裡選擇的插值方式為 "quadradic"方法,具體插值代碼及繪圖代碼如下:
from scipy import interpolatefig,ax = plt.subplots(figsize=(10,5),dpi=200,)
f = interpolate.interp1d(x,y,kind="quadratic")x_new = np.linspace(x.min(),x.max(),1000)y_new = f(x_new)ax.plot(x_new,y_new,lw=3,zorder=1)ax.scatter(x[-1],y[-1],s=200,lw=2,zorder=2)ax.set_title('Matplotlib Color Set exercise_01 \n',fontsize=20,color='black')ax.text(.85,-.1,'\nVisualization by DataCharm',transform = ax.transAxes, ha='center', va='center',fontsize = 8.5,color='black')plt.savefig(r'E:\Data_resourses\DataCharm 公眾號\Python\商業圖表繪製\color_set_region_ed.png',width=7,height=4, dpi=900,bbox_inches='tight')plt.show()結果如下:
加上填充面積可以使得圖表看起來不那麼單一,而且········(好吧·····我編不下去了,我就是為了最後成圖好看下而已)。添加如下代碼即可添加填充面積效果。
ax.fill_between(x_new, y_new,alpha=.15,lw=.1,zorder=2)這裡設置填充面積的線邊框寬度為0.1,會使得填充邊框不那麼明顯。效果如下:
如果不設置線寬lw,圖中紅色圓圈內將會有明顯的橫線效果,影響美觀。
記得好多小夥伴後臺留言或者直接和我溝通 關於色彩搭配的設置,其實,我也是一名學習者,可能就是看的色彩搭配網站以及精美可視化作品比較多,還是那句話 多模仿 多練習 對比不同色系對同一幅圖表所展示的效果,這是一個慢慢積累的過程,要是硬要我給建議,我也就多推幾個可視化的色彩搭配網站給你們。下面就本期推文設置相關顏色,具體代碼如下:
from scipy import interpolatefig,ax = plt.subplots(figsize=(10,5),dpi=200,facecolor ='#16151C')ax.set_facecolor('#16151C')f = interpolate.interp1d(x,y,kind="quadratic")x_new = np.linspace(x.min(),x.max(),1000)y_new = f(x_new)ax.plot(x_new,y_new,c="#12D3B0",lw=3,zorder=1)ax.scatter(x[-1],y[-1],s=200,c="#F1404B",ec='k',lw=1.5,zorder=2)ax.scatter(x[-1],y[-1],s=600,c="#F1404B",ec='none',lw=2,alpha=.4,zorder=1)ax.fill_between(x_new, y_new, color="#12D3B0",alpha=.15,ec="none",lw=.1,zorder=2)
for spine in ['left','top', 'right', 'bottom']: ax.spines[spine].set_color("none")ax.grid(axis='y',color='white',lw=.5,alpha=.1,zorder=0)ax.tick_params(labelsize=13,labelcolor='white',grid_color='white',left=False,bottom=False)ax.set_ylim(bottom=0,top=50)ax.set_xlim(left=-0.5)ax.set_xticklabels(labels=['2011','2012','2013','2014','2015','2016','2017','2018','2019','2020'])ax.set_title('Matplotlib Color Set exercise_02 \n',fontsize=20,color='white')ax.text(.85,-.1,'\nVisualization by DataCharm',transform = ax.transAxes, ha='center', va='center',fontsize = 8.5,color='white')plt.savefig(r'E:\Data_resourses\DataCharm 公眾號\Python\商業圖表繪製\color_set_02.png',width=7,height=4, dpi=900,bbox_inches='tight',facecolor='#16151C')plt.show()涉及的顏色設置代碼如下:
fig,ax = plt.subplots(figsize=(10,5),dpi=200,facecolor ='#16151C')ax.set_facecolor('#16151C')ax.plot(x_new,y_new,c="#12D3B0",lw=3,zorder=1)ax.scatter(x[-1],y[-1],s=200,c="#F1404B",ec='k',lw=1.5,zorder=2)ax.scatter(x[-1],y[-1],s=600,c="#F1404B",ec='none',lw=2,alpha=.4,zorder=1)ax.fill_between(x_new, y_new, color="#12D3B0",alpha=.15,ec="none",lw=.1,zorder=2) plt.savefig(r'E:\Data_resourses\DataCharm 公眾號\Python\商業圖表繪製\color_set_02.png',width=7,height=4, dpi=900,bbox_inches='tight',facecolor='#16151C')效果如下:
同時也可以設置如下效果:
本期推文就是對可視化色彩合理設置,具體的設置方案也沒有詳細給出,可能自己也是在學習過程中。可能給大家的幫助也不是很多,當然我們可以多交流,共同進步。自己能力有限,有錯的地方,大家可以後臺留言指出,或加群進行討論
為了大家更好的學習交流,DataCharm的學習交流群已經建立,由於群的二維碼連接易失效,可以通過掃面下方二維碼,添加本人微信,做自我介紹啊,要不然我都不知道是誰。我拉你入群。