日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Python利用Matplotlib庫實現繪制餅形圖_python

作者:侯小啾 ? 更新時間: 2022-06-12 編程語言

1.plt.pie()

餅圖 常常用來顯示 整體中各部分所占的比例,在python-matplotlib庫中通過plt.pie()方法來實現。

其主要參數如下:

x --------每一塊餅圖的比例組成的序列。可以是一個列表。如果其中元素的值加起來大于一,則會通過
歸一化處理后的結果。

explode -------- 指每一塊餅距離圓心的距離。默認為0。如果大于0,則餅即會分裂出來,即“分裂餅形圖”效果。

labels -------- 標簽,即每一塊餅圖外側顯示的說明文字

autopct -------- 設置餅圖百分比的格式。即字符串的格式,可以使用格式化字符串表達式或者format()函數的表達式。 不設定這個參數則不會顯示百分比的字符串。

pctdistance --------指百分比的位置刻度,默認為0.6。

shadow --------布爾類型,餅圖是否帶陰影(立體感)。默認False不帶。

labeldistance --------標記的繪制的位置,占半徑長度的比例。默認為1.1,如果大于1則顯示在餅的內側。

startangle --------起始繪制角度,默認從x軸正方向逆時針畫起。例如,設置為90則從y軸正方向畫起。

radius -------- 餅圖的半徑,默認為1。

counterclock -------- 指針方向。布爾類型。默認為True,表示逆時針。如果為False則表示順時針。

wedgeprops -------- wedge對象的屬性(wedge翻譯過來即三角木,楔子,即表示餅圖中的每一塊兒),可選參數,字典類型,默認為None。這個字典將會傳遞給wedge對象。如wedgeprops={‘linewidth’:2}表示wedge的線條寬度為2。

textprops -------- text標簽文本的屬性。也是一個字典類型,可選。默認為None。

center -------- 餅圖的原點。

frame -------- 是否顯示軸框架,布爾類型,默認不顯示,False。如果為True則會顯示軸框架。可以與grid()配合使用。通常不使用該參數,因為軸框架會干擾圖像效果。

rotatelabels -------- 可選,旋轉標簽到指定角度。(“指定”的含義是,以該位置連接圓心的半徑為水平基準。)?

2. 餅圖基本

繪制一張簡單的餅圖,圖像上的百分數顯示出一位小數。標簽為[‘A類’, ‘B類’, ‘C類’, ‘D類’]。

import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] ='#cc00ff'
x = [10, 20, 35, 25]
plt.pie(x, autopct='%1.1f%%', labels=['A類', 'B類', 'C類', 'D類'])
plt.title("產品數量占比")
plt.show()

圖像效果呈現如下:

3. 餅狀圖進階

設置背景顏色為’#00E5EE’,

百分數顯示一位小數,

四塊的顏色依次為[‘red’, ‘green’, ‘purple’, ‘yellow’]

B類 在餅圖中 向外分裂0.2個單位 ?explode=[0, 0.2, 0, 0],

從y軸正方向開始繪圖 ?startangle=90,

餅圖半徑設為1.1 ?radius=1.1,

標簽文本字體的大小為20,顏色為 ‘#8B1A1A’ ???textprops={‘fontsize’: 20, ‘color’: ‘#8B1A1A’}

顯示陰影效果,

標簽在半徑0.6單位處 ???pctdistance=0.6,

每個標簽都選擇一定的角度 ??rotatelabels=True

代碼如下:

import matplotlib.pyplot as plt
fig = plt.figure(1, facecolor='#00E5EE', figsize=(10, 8))
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] = '#cc00ff'
x = [10, 20, 35, 25]
plt.pie(x,
        labels=['A類', 'B類', 'C類', 'D類'],
        autopct='%1.1f%%',
        colors=['red', 'green', 'purple', 'yellow'],
        explode=[0, 0.2, 0, 0],
        startangle=90,
        radius=1.1,
        textprops={'fontsize': 20, 'color': '#8B1A1A'},
        shadow=True,
        pctdistance=0.6,
        rotatelabels=True
        )
# 設置標題文本、y坐標(即豎直方向上的位置),字體大小、顏色
plt.title("產品數量占比", y=1.05, fontsize=25, color='#cc00ff')
plt.show()

4. 環形圖

繪制環形圖仍然使用plt.pie()方法,

只需要設置其中的wedgeprops參數的屬性。

代碼示例如下

在上例代碼的基礎上,取消分裂,

添加 wedgeprops={‘width’: 0.4, ‘edgecolor’: ‘k’}。

然后把百分數的位置pctdistance設置為0.8。

import matplotlib.pyplot as plt
fig = plt.figure(1, facecolor='#00E5EE', figsize=(10, 8))
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] = '#cc00ff'
x = [10, 20, 35, 25]
plt.pie(x,
        labels=['A類', 'B類', 'C類', 'D類'],
        autopct='%1.1f%%',
        colors=['red', 'green', 'purple', 'yellow'],
        startangle=90,
        radius=1.1,
        textprops={'fontsize': 20, 'color': '#8B1A1A'},
        shadow=True,
        pctdistance=0.8,
        rotatelabels=True,
        wedgeprops={'width': 0.4, 'edgecolor': 'k'}
        )
plt.title("產品數量占比", y=1.05, fontsize=25, color='#cc00ff')
plt.show()

5. 內嵌環形圖

內嵌環形圖,以內嵌一次為例。即兩個圓環,需要調用兩次plt.pie()方法。

通過wedgeprops參數設置不同的環形邊界,通過radius設置不同的半徑。

全局字體為SimHei(黑體)。標題部分的局部字體使用“華文琥珀”(將系統的字體文件STHUPO.TTF復制到當前目錄下)。

import matplotlib.pyplot as plt
from matplotlib import font_manager

fig = plt.figure(1, facecolor='#ffffcc', figsize=(6, 6))
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
plt.rcParams['axes.facecolor'] = '#cc00ff'
x1 = [10, 20, 35, 25]
x2 = [8, 32, 20, 40]
plt.pie(x1,
        autopct='%1.1f%%',
        colors=['red', 'green', 'blue', 'yellow'],
        startangle=90,
        radius=1,
        textprops={'fontsize': 16, 'color': 'purple'},
        pctdistance=0.85,
        rotatelabels=True,
        wedgeprops={'linewidth': 2, 'width': 0.3, 'edgecolor': 'k'}
        )
plt.pie(x2,
        autopct='%1.1f%%',
        colors=['red', 'green', 'blue', 'yellow'],
        startangle=90,
        radius=0.7,
        textprops={'fontsize': 16, 'color': 'purple'},
        pctdistance=0.6,
        rotatelabels=True,
        wedgeprops={'linewidth': 2, 'width': 0.4, 'edgecolor': 'k'}
        )
plt.title("產品數量占比", fontsize=25, color='purple', fontproperties=font_manager.FontProperties(fname='STHUPO.TTF'))
plt.legend(['A類', 'B類', 'C類', 'D類'], bbox_to_anchor=(0.9, 0.2))
plt.show()

程序執行效果如下:

原文鏈接:https://blog.csdn.net/weixin_48964486/article/details/124104024

欄目分類
最近更新