欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用Matplotlib模塊的pie()函數(shù)實(shí)現(xiàn)繪制餅形圖

 更新時(shí)間:2023年11月16日 10:34:46   作者:蟲無涯  
這篇文章主要為大家詳細(xì)介紹了 Python 如何使用 Matplotlib 模塊的pie()函數(shù)繪制餅形圖,文中有詳細(xì)的代碼講解,對(duì)大家學(xué)習(xí)或工作有一定的幫助,感興趣的可以了解一下

1 模塊安裝

  • 先安裝matplotlib
pip install matplotlib

  • 安裝numpy模塊,安裝matplotlib時(shí)候就已經(jīng)安裝這個(gè)依賴了,所以不用裝了,當(dāng)然也可以獨(dú)立安裝:

  • 安裝pandas
pip install numpy

2 實(shí)現(xiàn)思路

  • 數(shù)據(jù)存放在excel中,對(duì)指定數(shù)據(jù)進(jìn)行分析,所以需要用到pandas
  • 對(duì)指定數(shù)據(jù)分析后繪制餅形圖,需要用到Matplotlib模塊的pie()函數(shù);
  • 對(duì)以下指定excel內(nèi)容進(jìn)行分析;
  • 分析用戶購(gòu)買區(qū)域情況占比,以下數(shù)據(jù)僅為參考,無真實(shí)意義,把以下內(nèi)容保存為data.xlsx:
用戶	    金額	    地址
user001	130.22	重慶
user002	55.64	江蘇省
user003	33	    江蘇省
user004	158.23	重慶
user005	124.56	安徽省
user006	33.26	山東省
user007	59.9	吉林省
user008	34.9	福建省
user009	45.36	山西省 
user010	35.23	河南省
user011	123.25	廣東省
user012	44.25	河北省
user013	58.26	廣東省
user014	83.79	貴州省
user015	59.99	廣東省
user016	63.12	福建省
user017	110.78	湖北省
user018	120.21	上海
user019	42.59	山東省
user020	78.99	山西省
user021	1150	浙江省
user022	66	    廣東省
user023	1256	安徽省
user024	36.3	廣東省
user025	54.89	廣東省
user026	164.89	廣東省
user027	45.78	廣東省
user028	126.45	廣東省
user029	47.35	河南省
user030	135.79	廣東省
user031	159.23	廣東省
user032	61.45	廣東省
user033	110.41	廣東省
user034	298.12	江蘇省
user035	102.23	云南省
user036	70.59	上海
user037	159.87	廣東省
user038	143.21	浙江省
user039	89.9	廣東省
user040	49.9	浙江省
user041	52.3	山東省
user042	89.4	江西省
user043	59.21	北京
user044	37.77	廣東省
user045	33.29	廣東省
user046	36.19	貴州省
user047	159.9	福建省
user048	49.9	四川省
user049	45.6	廣東省
user050	149.8	廣東省

3 pie()函數(shù)說明

  • 實(shí)現(xiàn)這個(gè)功能,主要使用了matplotlib 中 pyplot里的pie()函數(shù);
  • pie()函數(shù)部分源碼:
# Autogenerated by boilerplate.py.  Do not edit as changes will be lost.
@_copy_docstring_and_deprecators(Axes.pie)
def pie(
        x, explode=None, labels=None, colors=None, autopct=None,
        pctdistance=0.6, shadow=False, labeldistance=1.1,
        startangle=0, radius=1, counterclock=True, wedgeprops=None,
        textprops=None, center=(0, 0), frame=False,
        rotatelabels=False, *, normalize=None, data=None):
    return gca().pie(
        x, explode=explode, labels=labels, colors=colors,
        autopct=autopct, pctdistance=pctdistance, shadow=shadow,
        labeldistance=labeldistance, startangle=startangle,
        radius=radius, counterclock=counterclock,
        wedgeprops=wedgeprops, textprops=textprops, center=center,
        frame=frame, rotatelabels=rotatelabels, normalize=normalize,
        **({"data": data} if data is not None else {}))
  • 參數(shù)說明:
參數(shù)說明
x繪圖數(shù)據(jù)
explode指定餅形圖突出顯示的部分
labels餅形圖標(biāo)簽說明
colors餅形圖的填充色
autopct自動(dòng)添加百分比顯示
pctdistance設(shè)置百分比標(biāo)簽與圓心的距離
shadow是否添加餅形圖的陰影效果
labeldistance設(shè)置各扇形標(biāo)簽與圓心的距離
startangle設(shè)置餅形圖的初始擺放角度
radius設(shè)置餅圖的半徑
counterclock是否讓餅圖逆時(shí)針顯示
wedgeprops設(shè)置餅圖內(nèi)外邊界的屬性,如邊界線粗細(xì)和顏色
textprops設(shè)置餅圖文本屬性,如字體大小和顏色
center餅圖的中心點(diǎn)位置,默認(rèn)原點(diǎn)
frame是否顯示餅形圖后的圖框

4 實(shí)現(xiàn)過程

4.1 導(dǎo)入包

import pandas as pd
from matplotlib import pyplot as plt

4.2 定義一個(gè)類

  • 為了代碼整潔和可讀性,我們定義過一個(gè)類TestPie():
  • 類初始化:
class TestPie():
    def __init__(self):
        super(TestPie, self).__init__()

4.3 讀取數(shù)據(jù)并處理

 # 讀取數(shù)據(jù)
self.data_path = './data.xlsx'
self.data_content = pd.DataFrame(pd.read_excel(self.data_path))

# 獲取地址信息
self.address = self.data_content['地址']
self.data_content['省'] = self.address

# 獲取序號(hào)/地址/金額信息
self.content = self.data_content.groupby(['省'], as_index=False)["金額"].sum().reset_index()
# print(self.content)

# 降序排序
self.content01 = self.content.sort_values(['金額'], ascending=False)
self.content02 = self.content01.head(5)  # 讀取前5行

4.4 定義餅圖繪制方法

  • 定義方法:
    def test_pic(self):
        """餅形圖"""
  • 解決中文亂碼問題:
# 解決中文亂碼
plt.rcParams['font.sans-serif'] = ['SimHei']
  • 設(shè)置餅圖大?。?/li>
# 調(diào)節(jié)圖形大小
plt.figure(figsize=(3, 6))
  • 定義標(biāo)簽:
labels = self.content02['省'].values.tolist()
  • 設(shè)置餅形圖每塊的值:
sizes = self.content02['金額'].values.tolist()
  • 設(shè)置餅形圖每塊的顏色:
colors = ['cyan','darkorange','lawngreen','pink','gold']
  • 餅圖繪制:
patches, l_text, p_text = plt.pie(sizes,
                labels=labels,
                colors=colors,
                labeldistance=1, 
                autopct='%.1f%%', 
                startangle=90,
                radius=0.5,
                center=(0.3, 0.3),
                textprops={'fontsize': 8, 'color': 'k'},
                pctdistance=0.7)
  • 設(shè)置圖例,標(biāo)題等:
# 設(shè)置x,y軸刻度一致,這樣餅圖才能是圓的
plt.axis('equal')
plt.legend(loc='lower left', bbox_to_anchor=(-0.1, 0.8))
plt.title('購(gòu)買力分析')

5 完整源碼

# -*- coding:utf-8 -*-
# 作者:蟲無涯
# 日期:2023/11/15
# 文件名稱:test_pie.py
# 作用:Matplotlib模塊的pie()函數(shù)繪制餅形圖
# 聯(lián)系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import pandas as pd
from matplotlib import pyplot as plt


class TestPie():
    def __init__(self):
        super(TestPie, self).__init__()
        # 讀取數(shù)據(jù)
        self.data_path = './data.xlsx'
        self.data_content = pd.DataFrame(pd.read_excel(self.data_path))

        # 獲取地址信息
        self.address = self.data_content['地址']
        self.data_content['省'] = self.address

        # 獲取序號(hào)/地址/金額信息
        self.content = self.data_content.groupby(['省'], as_index=False)["金額"].sum().reset_index()
        # print(self.content)

        # 降序排序
        self.content01 = self.content.sort_values(['金額'], ascending=False)
        self.content02 = self.content01.head(5)  # 讀取前5行

    def test_pic(self):
        """餅形圖"""
        # 解決中文亂碼
        plt.rcParams['font.sans-serif'] = ['SimHei']

        # 調(diào)節(jié)圖形大小
        plt.figure(figsize=(3, 6))
        # 定義標(biāo)簽
        labels = self.content02['省'].values.tolist()
        # 設(shè)置餅形圖每塊的值
        sizes = self.content02['金額'].values.tolist()
        # 設(shè)置餅形圖每塊的顏色
        colors = ['cyan', 'darkorange', 'lawngreen', 'pink', 'gold']

        patches, l_text, p_text = plt.pie(sizes,
                labels=labels, 
                colors=colors, 
                labeldistance=1, 
                autopct='%.1f%%',
                startangle=90, 
                radius=0.5, 
                center=(0.3, 0.3),
                textprops={'fontsize': 8, 'color': 'k'},
                pctdistance=0.7) 
                
        plt.axis('equal')
        # 顯示圖例
        plt.legend(loc='lower left', bbox_to_anchor=(-0.1, 0.8)

        # 添加圖標(biāo)題
        plt.title('購(gòu)買力分析')
        plt.grid()
        plt.show()


if __name__ == "__main__":
    result = TestPie()
    result.test_pic()

效果顯示:

以上就是Python使用Matplotlib模塊的pie()函數(shù)實(shí)現(xiàn)繪制餅形圖的詳細(xì)內(nèi)容,更多關(guān)于Python Matplotlib餅形圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論