日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

一行代码让matplotlib图表变高大上

發(fā)布時間:2024/9/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 一行代码让matplotlib图表变高大上 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1 簡介

matplotlib作為Python生態(tài)中最流行的數(shù)據(jù)可視化框架,雖然功能非常強大,但默認樣式比較簡陋,想要制作具有簡潔商務風格的圖表往往需要編寫眾多的代碼來調(diào)整各種參數(shù)。

而今天要為大家介紹的dufte,就是用來通過簡短的代碼,對默認的matplotlib圖表樣式進行自動改造的Python庫:

2 利用dufte自動改造matplotlib圖表

通過pip install dufte安裝完成后,我們就可以將dufte的幾個關鍵API穿插在常規(guī)matplotlib圖表的繪制過程中,目前主要有以下幾種功能:

2.1 主題設置

dufte最重要的功能是其自帶的主題風格,而在matplotlib中有兩種設置主題的方式,一種是利用plt.style.use(主題)來全局設置,一般不建議這種方式。

另一種方式則是以下列方式來在with的作用范圍內(nèi)局部使用主題:

#?局部主題設置 with?plt.style.context(主題):#?繪圖代碼...

我們今天就都使用第二種方式,首先導入演示所需的依賴庫,并從本地注冊思源宋體:

import?dufte import?numpy?as?np import?matplotlib.pyplot?as?plt from?matplotlib?import?font_manager#?注冊本地思源宋體 fontproperties?=?font_manager.FontProperties(fname='NotoSerifSC-Regular.otf')

接下來我們以折線圖和柱狀圖為例:

  • 折線圖

#?折線圖示例 with?plt.style.context(dufte.style):x?=?range(100)y?=?np.random.standard_normal(100).cumsum()fig,?ax?=?plt.subplots(figsize=(10,?5),?facecolor='white',?edgecolor='white')ax.plot(x,?y,?linestyle='-.',?color='#607d8b')ax.set_xlabel('x軸示例',?fontproperties=fontproperties,?fontsize=16)ax.set_ylabel('y軸示例',?fontproperties=fontproperties,?fontsize=16)ax.set_title('折線圖示例',?fontproperties=fontproperties,?fontsize=20)fig.savefig('圖2.png',?dpi=300,?bbox_inches='tight')
  • 柱狀圖

#?柱狀圖示例 with?plt.style.context(dufte.style):x?=?range(25)y?=?np.random.standard_normal(25)fig,?ax?=?plt.subplots(figsize=(10,?5),?facecolor='white',?edgecolor='white')ax.bar(x,?y)ax.set_xlabel('x軸示例',?fontproperties=fontproperties,?fontsize=16)ax.set_ylabel('y軸示例',?fontproperties=fontproperties,?fontsize=16)ax.set_title('柱狀圖示例',?fontproperties=fontproperties,?fontsize=20)fig.savefig('圖3.png',?dpi=300,?bbox_inches='tight')

可以看到,dufte自帶了一套簡潔的繪圖風格,主張去除多余的軸線,只保留必要的參考線,適用于我們?nèi)粘9ぷ髦械耐ㄓ贸鰣D需求。

2.2 自動圖例美化

除了前面介紹的整體主題風格之外,dufte還自帶了一套圖例風格化策略,只需要在繪圖過程中利用dufte.legend()來代替matplotlib原有的legend()即可,以下面的折線圖為例:

#?折線圖示例 with?plt.style.context(dufte.style):x?=?range(100)y1?=?np.random.randint(-5,?6,?100).cumsum()y2?=?np.random.randint(-5,?10,?100).cumsum()y3?=?np.random.randint(-5,?6,?100).cumsum()fig,?ax?=?plt.subplots(figsize=(10,?5),?facecolor='white',?edgecolor='white')ax.plot(x,?y1,?linestyle='dotted',?label='Series?1')ax.plot(x,?y2,?linestyle='dashed',?label='Series?2')ax.plot(x,?y3,?linestyle='dashdot',?label='Series?3')ax.set_xlabel('x軸示例',?fontproperties=fontproperties,?fontsize=16)ax.set_ylabel('y軸示例',?fontproperties=fontproperties,?fontsize=16)dufte.legend()ax.set_title('dufte.legend()示例',?fontproperties=fontproperties,?fontsize=20)fig.savefig('圖4.png',?dpi=300,?bbox_inches='tight')

可以看到,對于多系列圖表,只需要一行dufte.legend()就可以自動添加出下列別致的圖例說明:

2.3 柱狀圖自動標注

很多時候我們在繪制柱狀圖時,希望把每個柱體對應的y值標注在柱體上,而通過dufte.show_bar_values(),只要其之前的繪圖流程中設置了xticks,它就會幫我們自動往柱體上標注信息:

#?柱狀圖示例 with?plt.style.context(dufte.style):x?=?range(15)y?=?np.random.randint(5,?15,?15)fig,?ax?=?plt.subplots(figsize=(10,?5),?facecolor='white',?edgecolor='white')ax.bar(x,?y)ax.set_xticks(x)ax.set_xticklabels([f'項目{i}'?for?i?in?x],?fontproperties=fontproperties,?fontsize=10)dufte.show_bar_values()ax.set_xlabel('x軸示例',?fontproperties=fontproperties,?fontsize=16)ax.set_ylabel('y軸示例',?fontproperties=fontproperties,?fontsize=16)ax.set_title('柱狀圖示例',?fontproperties=fontproperties,?fontsize=20)fig.savefig('圖5.png',?dpi=300,?bbox_inches='tight')

作為一個處于開發(fā)初期的庫,dufte未來勢必會加入更多的實用功能,感興趣的朋友可以對其持續(xù)關注。

——END——

最近發(fā)現(xiàn)一個點外賣每頓飯都能少花5-20元的寶藏號。

就是她,↓點擊下面名片關注公眾號↓

進入公眾號點擊菜單領取紅包最低5元,最高56元!

總結(jié)

以上是生活随笔為你收集整理的一行代码让matplotlib图表变高大上的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。