最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python基于Matplotlib繪制餅圖的詳細教程

 更新時間:2025年12月16日 09:48:19   作者:永遠是夏天  
餅圖是數據可視化中經典的占比類圖表,核心用于展示各分類在整體中的比例關系,本文基于Matplotlib詳解餅圖的繪制方法,涵蓋基礎繪制、樣式定制、進階優(yōu)化等核心知識點,結合實戰(zhàn)案例讓你快速掌握,需要的朋友可以參考下

引言

餅圖是數據可視化中經典的占比類圖表,核心用于展示各分類在整體中的比例關系,尤其適合類別數量較少(建議不超過8類)的場景。本文基于Matplotlib詳解餅圖的繪制方法,涵蓋基礎繪制、樣式定制、進階優(yōu)化等核心知識點,結合實戰(zhàn)案例讓你快速掌握。

一、基礎餅圖繪制

1. 核心語法與最簡示例

Matplotlib繪制餅圖的核心函數是plt.pie(),只需傳入“各分類數值”即可生成基礎餅圖。 示例:展示某電商平臺各品類銷售額占比

import matplotlib.pyplot as plt

# 解決中文顯示問題(通用配置)
plt.rcParams["font.sans-serif"] = ["SimHei"]  # Windows
# plt.rcParams["font.sans-serif"] = ["PingFang SC"]  # macOS
plt.rcParams["axes.unicode_minus"] = False

# 1. 準備數據:分類名稱 + 對應數值(數值會自動計算占比)
categories = ["服飾", "美妝", "食品", "數碼", "家居"]
sales = [250, 180, 220, 300, 150]

# 2. 創(chuàng)建畫布
plt.figure(figsize=(8, 8))  # 餅圖建議用正方形畫布,避免變形

# 3. 繪制基礎餅圖
plt.pie(sales,  # 核心數據:各分類數值
        labels=categories)  # 分類標簽

# 4. 顯示圖表
plt.title("某電商平臺各品類銷售額占比", fontsize=14)
plt.show()

2. 核心參數解析(基礎版)

參數作用示例
x必選,各分類的數值(非占比,Matplotlib自動計算)x=[250, 180, 220]
labels分類標簽,對應x的每個數值labels=["服飾","美妝","食品"]
autopct顯示各部分占比,支持格式字符串autopct="%1.1f%%"(保留1位小數的百分比)
colors自定義各扇區(qū)顏色colors=["#FF6B6B","#4ECDC4","#45B7D1"]
startangle餅圖起始角度(默認從x軸正方向開始,逆時針繪制)startangle=90(從y軸正方向開始)

優(yōu)化版基礎餅圖(添加占比、自定義顏色):

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

categories = ["服飾", "美妝", "食品", "數碼", "家居"]
sales = [250, 180, 220, 300, 150]
# 自定義配色(推薦莫蘭迪/清新色系,避免刺眼)
colors = ["#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4", "#FECA57"]

plt.figure(figsize=(8, 8))
# 繪制餅圖,添加占比和顏色
plt.pie(sales,
        labels=categories,
        autopct="%1.1f%%",  # 顯示占比(1位小數)
        colors=colors,
        startangle=90)  # 起始角度90度

plt.title("某電商平臺各品類銷售額占比", fontsize=14)
plt.axis("equal")  # 強制餅圖為正圓形(關鍵!避免拉伸變形)
plt.show()

二、進階優(yōu)化:突出重點、提升可讀性

1. 突出核心分類(explode參數)

通過explode參數可將指定扇區(qū)“分離”出來,突出重點類別(如占比最高的“數碼”品類):

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

categories = ["服飾", "美妝", "食品", "數碼", "家居"]
sales = [250, 180, 220, 300, 150]
colors = ["#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4", "#FECA57"]
# explode:對應每個扇區(qū)的分離距離,0為不分離,數值越大分離越遠
explode = (0, 0, 0, 0.1, 0)  # 僅“數碼”扇區(qū)分離0.1距離

plt.figure(figsize=(8, 8))
plt.pie(sales,
        labels=categories,
        autopct="%1.1f%%",
        colors=colors,
        startangle=90,
        explode=explode,  # 啟用分離效果
        shadow=True)  # 添加陰影,增強立體感

plt.title("某電商平臺各品類銷售額占比(突出數碼品類)", fontsize=14)
plt.axis("equal")
plt.show()

2. 優(yōu)化標簽樣式(字體、位置)

默認標簽可能重疊或樣式單一,可通過textprops調整標簽樣式,或手動調整占比標簽位置:

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

categories = ["服飾", "美妝", "食品", "數碼", "家居"]
sales = [250, 180, 220, 300, 150]
colors = ["#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4", "#FECA57"]
explode = (0, 0, 0, 0.1, 0)

plt.figure(figsize=(8, 8))
# 繪制餅圖并捕獲文本對象(用于后續(xù)調整)
patches, texts, autotexts = plt.pie(
    sales,
    labels=categories,
    autopct="%1.1f%%",
    colors=colors,
    startangle=90,
    explode=explode,
    shadow=True,
    textprops={"fontsize": 11}  # 統(tǒng)一設置標簽字體大小
)

# 單獨調整占比標簽樣式(如顏色、加粗)
for autotext in autotexts:
    autotext.set_color("white")  # 占比文字設為白色
    autotext.set_fontweight("bold")  # 加粗

plt.title("某電商平臺各品類銷售額占比", fontsize=14)
plt.axis("equal")
plt.show()

3. 處理小占比類別(避免標簽重疊)

若部分類別占比過?。ㄈ?lt;5%),可將其合并為“其他”類,或通過pctdistance調整占比標簽位置:

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

# 原始數據:含小占比類別
categories = ["服飾", "美妝", "食品", "數碼", "家居", "圖書", "配飾"]
sales = [250, 180, 220, 300, 150, 30, 20]

# 合并小占比類別(圖書+配飾=其他)
new_categories = ["服飾", "美妝", "食品", "數碼", "家居", "其他"]
new_sales = [250, 180, 220, 300, 150, 50]
colors = ["#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4", "#FECA57", "#DDA0DD"]

plt.figure(figsize=(8, 8))
plt.pie(new_sales,
        labels=new_categories,
        autopct="%1.1f%%",
        colors=colors,
        startangle=90,
        pctdistance=0.85)  # 占比標簽距離圓心的比例(默認0.6,調大避免重疊)

plt.title("某電商平臺各品類銷售額占比(合并小品類)", fontsize=14)
plt.axis("equal")
plt.show()

三、特殊場景:環(huán)形餅圖(空心餅圖)

環(huán)形餅圖比普通餅圖更美觀,且可在中心添加文字,適合展示多層占比或突出視覺效果。 實現原理:繪制兩個餅圖,外層為數據,內層為白色填充的“空心”。

import matplotlib.pyplot as plt

plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

categories = ["服飾", "美妝", "食品", "數碼", "家居"]
sales = [250, 180, 220, 300, 150]
colors = ["#FF6B6B", "#4ECDC4", "#45B7D1", "#96CEB4", "#FECA57"]

plt.figure(figsize=(8, 8))
# 繪制外層數據餅圖
plt.pie(sales,
        labels=categories,
        autopct="%1.1f%%",
        colors=colors,
        startangle=90,
        wedgeprops={"width": 0.3})  # width:環(huán)形寬度(0-1,越小越細)

# 繪制內層空心(白色填充)
plt.pie([1], colors="white", radius=0.7)  # radius:內層半徑(小于外層)

# 中心添加文字
plt.text(0, 0, "總銷售額\n1100萬", ha="center", va="center", fontsize=12)

plt.title("某電商平臺各品類銷售額占比(環(huán)形圖)", fontsize=14)
plt.axis("equal")
plt.show()

四、餅圖繪制注意事項

  1. 適用場景:僅用于展示“部分-整體”關系,且類別數不宜過多(建議≤6類),否則扇區(qū)過小、可讀性差;
  2. 避免誤導:餅圖的視覺效果易受起始角度、扇區(qū)順序影響,若需精準對比占比,優(yōu)先用柱狀圖;
  3. 正圓形保障:務必添加plt.axis("equal"),否則畫布拉伸會導致餅圖變形為橢圓;
  4. 中文與負號:始終配置rcParams解決中文亂碼和負號顯示問題;
  5. 保存高清圖:用plt.savefig("餅圖.png", dpi=300, bbox_inches="tight")替代plt.show(),避免文字截斷。

以上就是Python基于Matplotlib繪制餅圖的詳細教程的詳細內容,更多關于Python Matplotlib繪制餅圖的資料請關注腳本之家其它相關文章!

相關文章

  • Python版本與supervisor版本的兼容性詳解

    Python版本與supervisor版本的兼容性詳解

    本文介紹了不同Python版本與Supervisor的兼容性,針對Windows環(huán)境提供了特定版本推薦,并強調了路徑處理、進程管理和服務集成的注意事項,同時,還提到了安裝時的依賴要求及驗證兼容性的方法
    2026-04-04
  • selenium在scrapy中的使用代碼

    selenium在scrapy中的使用代碼

    本文給大家分享selenium在scrapy中的使用代碼,使用selenium可以很好的幫助我們獲取一些重要數據信息,本文通過代碼給大家詳細介紹,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • Python 多維List創(chuàng)建的問題小結

    Python 多維List創(chuàng)建的問題小結

    這篇文章主要介紹了Python 多維List創(chuàng)建的問題小結,詳細的介紹了遇到的一個小問題的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 通過實例解析Python文件操作實現步驟

    通過實例解析Python文件操作實現步驟

    這篇文章主要介紹了通過實例解析Python文件操作實現步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • python3顯式變量類型typing的實現

    python3顯式變量類型typing的實現

    這篇文章主要介紹了python3顯式變量類型typing的實現,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-09-09
  • Python高級編程之消息隊列(Queue)與進程池(Pool)實例詳解

    Python高級編程之消息隊列(Queue)與進程池(Pool)實例詳解

    這篇文章主要介紹了Python高級編程之消息隊列(Queue)與進程池(Pool),結合實例形式詳細分析了Python消息隊列與進程池的相關原理、使用技巧與操作注意事項,需要的朋友可以參考下
    2019-11-11
  • Python openpyxl模塊原理及用法解析

    Python openpyxl模塊原理及用法解析

    這篇文章主要介紹了Python openpyxl模塊原理及用法解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-01-01
  • python實現求兩個字符串的最長公共子串方法

    python實現求兩個字符串的最長公共子串方法

    今天小編就為大家分享一篇python實現求兩個字符串的最長公共子串方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • 基于keras中的回調函數用法說明

    基于keras中的回調函數用法說明

    這篇文章主要介紹了基于keras中的回調函數用法說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Django中使用極驗Geetest滑動驗證碼過程解析

    Django中使用極驗Geetest滑動驗證碼過程解析

    這篇文章主要介紹了Django中使用極驗Geetest滑動驗證碼過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07

最新評論

桐乡市| 深州市| 石城县| 图们市| 乾安县| 申扎县| 东乌| 宁海县| 龙海市| 孝昌县| 威海市| 离岛区| 利川市| 郎溪县| 巨野县| 浦东新区| 连平县| 原阳县| 左云县| 嘉义市| 石首市| 山西省| 长春市| 珲春市| 渑池县| 定边县| 大庆市| 荔浦县| 迁西县| 平度市| 鲁甸县| 临江市| 阜新市| 武汉市| 治多县| 和平区| 晋城| 六安市| 兴文县| 宜城市| 遂昌县|