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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python可视化 | Matplotlib绘制圆环图的两种方法!

發布時間:2024/9/15 python 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python可视化 | Matplotlib绘制圆环图的两种方法! 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

人生苦短,快學Python!今天給大家介紹Python可視化之環形圖的繪制。

環形圖,也被稱為圓環圖。它在功能上與餅圖相同,只是中間有一個空白,并且能夠同時支持多個統計數據。與標準餅圖相比,環形圖提供了一個更好的數據強度,因為空白中心可以用來顯示額外的、相關的數據。

環形圖

使用場景:適合展示分類的占比情況,不適合展示分類過多(超過9條數據)或者差別不明顯的場景。

在本文中,我們將介紹兩種使用 Matplotlib 繪制環形圖的方法。一種是使用餅圖和參數 wedgeprops 的簡單方法;另一種是使用極坐標軸和水平條形圖的方法[1]

方法一:餅圖

Matplotlib 中沒有繪制環形圖的方法[2],但是我們可以使用參數 wedgeprops 快速轉換餅圖為環形圖。

下面,先繪制一個簡單的讓小號用一個簡單的餅圖。

import?matplotlib.pyplot?as?plt plt.pie([87,13],?startangle=90,?colors=['#5DADE2',?'#515A5A']) plt.show()餅圖

接下來,我們我們可以添加參數 wedgeprops ,并定義邊緣的寬度。

fig,?ax?=?plt.subplots(figsize=(6,?6))ax.pie([87,13],?wedgeprops={'width':0.3},?startangle=90,?colors=['#5DADE2',?'#515A5A'])一個環形圖

是不是非常簡單,其實我們還可以添加一些文字,使得我們的數據可視化更有表現力。

fig,?ax?=?plt.subplots(figsize=(6,?6)) wedgeprops?=?{'width':0.3,?'edgecolor':'black',?'linewidth':3} ax.pie([87,13],?wedgeprops=wedgeprops,?startangle=90,?colors=['#5DADE2',?'#515A5A']) plt.title('環形圖',?fontsize=24,?loc='center') plt.text(0,?0,?"87%",?ha='center',?va='center',?fontsize=42) plt.text(-1.2,?-1.2,?"來源:?Thiago?Carvalho",?ha='left',?va='center',?fontsize=12)帶有詳細信息的環形圖

為了支持中文,我們需要增加這兩行Python代碼。

plt.rcParams['font.sans-serif']?=?['SimHei']??#?用來正常顯示中文標簽 plt.rcParams['axes.unicode_minus']?=?False??#?用來正常顯示負號

當我們要顯示簡單的比例時,環形圖特別有用。

然而在我眼中,圓環圖最適合用來展示進度條!而要制作類似進度條一樣的圓環圖,可以可以進一步簡化圖表。

fig,?ax?=?plt.subplots(figsize=(6,?6)) data?=?[87,?13] wedgeprops?=?{'width':?0.3,?'edgecolor':?'black',?'lw':?3} patches,?_?=?ax.pie(data,?wedgeprops=wedgeprops,?startangle=90,?colors=['#5DADE2',?'white']) patches[1].set_zorder(0) patches[1].set_edgecolor('white') plt.title('類似進度條的環形圖',?fontsize=24,?loc='center') plt.text(0,?0,?f"{data[0]}%",?ha='center',?va='center',?fontsiAze=42) plt.text(-1.2,?-1.3,?"來源:?Thiago?Carvalho",?ha='left',?va='top',?fontsize=12)

方法二:條形圖

相對于前一個方法,該方案較為復雜,但也提供了更多的自定義選項。

我們先從繪制基礎圖形開始。

fig,?ax?=?plt.subplots(figsize=(6,?6),?subplot_kw={'projection':'polar'}) data?=?87? startangle?=?90 x?=?(data?*?pi?*2)/?100 left?=?(startangle?*?pi?*2)/?360?#?轉換起始角度 ax.barh(1,?x,?left=left,?height=1,?color='#5DADE2') plt.ylim(-3,?3)

如果想制作成前面一樣的進度條,還需要進行更多的操作。

fig,?ax?=?plt.subplots(figsize=(6,?6),?subplot_kw={'projection':'polar'}) data?=?87 startangle?=?90 x?=?(data?*?pi?*2)/?100 left?=?(startangle?*?pi?*2)/?360?#控制起始位置 plt.xticks([]) plt.yticks([]) ax.spines.clear() ax.barh(1,?x,?left=left,?height=1,?color='#5DADE2')? plt.ylim(-3,?3) plt.text(0,?-3,?"87%",?ha='center',?va='center',?fontsize=42)進度條 - 環形圖

使用這種方法的話,我們擁有更多的自定義選擇。比如可以添加多個進度條、定義它們之間的距離等等。

篇幅限制,只顯示部分代碼嗎,完整代碼下載見文末。

#?在末尾標出線條和點來使它們變圓 for?i,?x?in?enumerate(xs):ax.barh(ys[i],?x,?left=left,?height=1,?color=colors[i])ax.scatter(x+left,?ys[i],?s=350,?color=colors[i],?zorder=2)ax.scatter(left,?ys[i],?s=350,?color=colors[i],?zorder=2)plt.ylim(-4,?4)legend_elements?=?[Line2D([0],?[0],?marker='o',?color='w',?label='Group?A',?markerfacecolor='#4393E5',?markersize=10),Line2D([0],?[0],?marker='o',?color='w',?label='Group?B',markerfacecolor='#43BAE5',?markersize=10),Line2D([0],?[0],?marker='o',?color='w',?label='Group?C',?markerfacecolor='#7AE6EA',?markersize=10)] ax.legend(handles=legend_elements,?loc='center',?frameon=False)plt.xticks([]) plt.yticks([]) ax.spines.clear()

好了,以上就是今天介紹的兩種使用 Matplotlib 繪制環形圖的方法。

另外,我還看過另外一個騷操作,也就是在餅圖的中心繪制一個白色圓圈,使之變成一個環形圖。

如果大家覺得本文還不錯,記得給個一鍵三連!

參考資料

[1]

Towardsdatascience: https://towardsdatascience.com/

[2]

Matplotlib: https://github.com/matplotlib/matplotlib

各位伙伴們好,詹帥本帥搭建了一個個人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請移步小程序體驗一下哦!(歡迎提建議)推薦閱讀牛逼!Python常用數據類型的基本操作(長文系列第①篇) 牛逼!Python的判斷、循環和各種表達式(長文系列第②篇)牛逼!Python函數和文件操作(長文系列第③篇)牛逼!Python錯誤、異常和模塊(長文系列第④篇)

總結

以上是生活随笔為你收集整理的Python可视化 | Matplotlib绘制圆环图的两种方法!的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。