Python可視化 | Matplotlib繪製圓環圖的兩種方法!

2022-01-02 CSDN精品課

人生苦短,快學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 繪製環形圖的方法。

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

相關焦點

  • Python筆記:用matplotlib繪製面積圖
    用pyecharts繪製出來的面積圖、圓環圖太有個性了,未免感覺有點「高處不勝寒」。
  • Python-matplotlib: 散點圖的繪製
    ,所使用的數據關於全球教育水平劃分的師生比例,涉及到的包主要為matplotlib和seaborn,當然用於數據處理分析的pandas和 numpy也必不可少。本文涉及的數據主要包括兩種,一種為全球各大洲的網格數據,用於繪製另類散點圖例,一種為全球各州的教育水平的師生比例,用於散點圖的繪圖。各大洲的網格數據如下(部分):如紅框所示,為所需要的數據,用於繪圖。
  • python使用matplotlib畫動態圖
    matplotlib是python的核心繪圖庫,是python的一個開源項目,旨在為python提供一個繪圖庫。matplotlib與numpy組合是一種可行的matlab替代方案。在可視化中matplotlib是最常使用的工具,是對數據整體判斷、效果預測不可或缺的重要模塊。
  • Python-matplotlib 學術型散點圖繪製
    本期推文只要介紹學術散點圖的繪製教程,涉及的內容主要還是matplotlib散點圖的繪製,只不過添加了相關性分析,擬合關係式和顏色映射散點密度(大多數的英文文章中多出現此類圖表
  • Python可視化:學會Matplotlib這幾點就夠了!
    python分析可視化展示,對於日常的分析中主要用到餅圖、折線圖、直方圖基本能滿足一般的分析可視化呈現。(3)可視化不同圖形函數常用:plt.plot(x,y,fmt,…) 繪製一個折線圖plt.boxplot(data,notch,position) 繪製一個箱形圖plt.bar(left,height,width,bottom) 繪製一個條形圖plt.barh(width,bottom,left,height) 繪製一個橫向條形圖
  • 高效使用 Python 可視化工具 Matplotlib
    基本前提如果你除了本文之外沒有任何基礎,建議用以下幾個步驟學習如何使用matplotlib:學習基本的matplotlib術語,尤其是什麼是圖和坐標軸始終使用面向對象的接口,從一開始就養成使用它的習慣用基礎的pandas繪圖開始你的可視化學習用seaborn進行更複雜的統計可視化用matplotlib來定製
  • python:matplotlib入門詳細教程
    與之齊名,matplotlib作為數據科學的的另一必備庫,算得上是python可視化領域的元老,更是很多高級可視化庫的底層基礎,其重要性不言而喻。本篇對matplotlib進行系統性介紹,不會面面俱到,但求體系完備、詳略得當。
  • Matplotlib數據可視化方法總結
    一、 常用可視化工具Python有許多用於數據可視化的庫,例如常見的有seaborn、pyecharts(echarts的Python版本)、ggplot(移植於R語言的ggplot2,但是有些差別,Python有其他方法可以調用R語言的ggplot2)、bokeh、Plotly(同時支持Python和R語言)等等,這些大多是基於Matplotlib
  • Matplotlib數據可視化!
    一、 常用可視化工具Python有許多用於數據可視化的庫,例如常見的有seaborn、pyecharts(echarts的Python版本)、ggplot(移植於R語言的ggplot2,但是有些差別,Python有其他方法可以調用R語言的ggplot2)、bokeh、Plotly(同時支持Python和R語言)等等,這些大多是基於Matplotlib
  • python數據科學系列:matplotlib入門詳細教程
    與之齊名,matplotlib作為數據科學的的另一必備庫,算得上是python可視化領域的元老,更是很多高級可視化庫的底層基礎,其重要性不言而喻。本篇對matplotlib進行系統性介紹,不會面面俱到,但求體系完備、詳略得當。
  • Python可視化|matplotlib10-繪製散點圖scatter
    兩種方法繪製散點圖 scatter。法繪製散點圖3、matplotlib.axes.Axes.scatter法繪製散點圖  4、參考資料法繪製散點圖import matplotlib.pyplot as pltimport numpy as np
  • [神奇的Python可視化]在Matplotlib上面繪製圖片標記
    所謂的天下苦matplotlib散點圖符號久矣……眾所周知的是matplotlib的散點圖符號是固定的,如下所示:markertype含義當然,matplotlib還支持LaTeX 符號,也就是用來寫數學公式的符號,比如:但是總感覺還是不夠的樣子,比如我們要在圖上顯示機場,更希望的是用下面這樣的圖標:如果用matplotlib默認的圖標繪製的效果應該是這樣的:那麼我們用上面那個機場圖標
  • Matplotlib支持中文顯示的兩種方法
    在默認情況下,Matplotlib在設置title和標註text時如果使用中文,會出現尷尬的框框。使用以下兩種方法可以輕鬆化解尷尬,讓您在使用Matplotlib繪圖時展露愉悅笑容。二,將中文字體文件放入matplotlib安裝目錄下 這種方法步驟較多,但是只要初始設置了中文字體後,此後用到地方無需再特別指定字體參數。
  • matplotlib庫繪製折線圖、子圖及條形圖
    前面幾節我們學習了python中numpy和pandas庫的一些常用操作,接下來幾個章節,我們學習一個非常重要的數據可視化庫matplotlib(seaborn庫也有有所涉及)。這裡我們需要知道,matplotlib庫主要繪製一些2D圖形和簡單的3D圖形。
  • Python Matplotlib入門學習(一)
    ,今天就帶大家通過matplotlib的官方文檔帶領大家學習如何進行基本繪圖。圖:matplotlib官網主頁Matplotlib:使用Python可視化「Matplotlib是一個綜合庫,用於在Python中創建靜態,動畫和交互式可視化。Matplotlib使簡單的事情變得容易而困難的事情變得可能。」這是他們的廣告語,不多說了我們進入正題。
  • windows下如何安裝numpy、pandas、matplotlib、seaborn的python包?(附可視化展示+代碼)
    安裝pip安裝模塊numpypandasmatplotlibseabornpython數據可視化測試安裝python    如果想安裝numpy、pandas或matplotlib的python模塊,需要先安裝python。
  • Matplotlib入門詳細教程
    >Matplotlib入門詳細教程Matplotlib作為數據科學的的必備庫,算得上是python可視化領域的元老,更是很多高級可視化庫的底層基礎,其重要性不言而喻。matplotlib不是python內置庫,調用前需手動安裝,且需依賴numpy庫。截至當前,matplotlib發行版本號為3.2.1,適配python3.6及以上版本。
  • matplotlib的Python數據可視化和探索——入門指南
    matplotlib——最受歡迎的Python庫,用於數據可視化和探索我喜歡在Python中使用matplotlib。這是我學會掌握的第一個可視化庫,此後一直存在。matplotlib是最受歡迎的用於數據可視化和探索的Python庫,這是有原因的——它提供的靈活性和敏捷性是無與倫比的!
  • python可視化之matplotlib庫餅形圖的基本用法與應用實例
    實驗環境:已正確安裝python3.5、matplotlib1、餅形圖概念餅狀圖顯示一個整體中各項大小佔總體的百分比,可以清楚反應部分與總體的關係。在餅形圖上標出百分比為了在平面上觀察各項的比例,可以設置x與y的比例為1進行觀察。利用axes方法創建或激活軸,aspect為一個數字時,表示屏幕空間中y與x之比。
  • 數據可視化|matplotlib 的主要組成元素
    matplotlib 繪製出來的圖形質量很高,可以達到出版級別,而且功能非常強大,幾乎能創建任何你能想像的可視化圖形。在 Python 中,還有很多其他非常優秀的繪圖庫,比如 Seaborn、Pyecharts、Bokeh、Plotly、ggplot 等等,它們各有各的優勢,但是我個人認為,應該先把 matplotlib 學精學透,達到深入理解和熟練運用的程度。