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

Python+matplotlib繪制餅圖和堆疊圖

 更新時間:2022年04月29日 08:19:01   作者:codingchen  
Matplotlib是Python的繪圖庫,它能讓使用者很輕松地將數(shù)據(jù)圖形化,并且提供多樣化的輸出格式。本文將為大家介紹如何用matplotlib繪制餅圖和堆疊圖,感興趣的朋友可以學習一下

餅圖常用于統(tǒng)計學模塊,畫餅圖用到的方法為:pie( )

一、pie()函數(shù)用來繪制餅圖

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)

pie()函數(shù)參數(shù)較多,需要我們調(diào)整的常見為以下幾個

x: 每個扇形的占比的序列或數(shù)組

explode :如果不是None,則是一個len(x)長度的數(shù)組,指定每一塊的突出程度;突出顯示,設置每一塊分割出來的間隙大小

labels:為每個扇形提供標簽的字符串序列

colors:為每個扇形提供顏色的字符串序列

autopct :如果是一個格式字符串,標簽將是fmt % pct。如果是一個函數(shù),它將被調(diào)用。

shadow:陰影

startangle:從x軸逆時針旋轉,餅的旋轉角度  參數(shù)用法,可以去官網(wǎng)查詢,并自己多去償試。

二、一個簡單的例子

統(tǒng)計每天休息、工作、娛樂等時間的百分比

import matplotlib.pyplot as plt

slices = [7,2,9,3,3]
activities = ['sleeping','eating','working','studing','playing']
cols = ['r','m','y','c','b']

plt.pie(slices,
        labels=activities,
        colors=cols,  #自定義的顏色序列,對比slices,可多可少,少時自動補充,如沒有,則默認不同顏色。
        startangle=90,
        shadow= True, 
        explode=(0,0.1,0,0,0.2),#占比突出程度,
        autopct='%1.1f%%' #百分比的顯示格式
        )

plt.title('Time statistics')
plt.show()

實際運行結果:

注意:startangle=90時的開始位置。整個餅圖是從0度(圓心向右方向)逆時針分布的。

那繼續(xù)用上篇創(chuàng)建的2個色子,來實現(xiàn)一個餅圖。

思考:上述餅圖代碼中最能決定餅圖形狀的參數(shù)是slices = [7,2,9,3,3],在不考慮每個占比名稱、美觀等的情況下,先確定如何實現(xiàn)slices中的各數(shù)值。

比如,當投擲2粒色子(一個8個面,一個6個面)時,1000000次時,分別統(tǒng)計出現(xiàn)點1、2、3、4、5……14的總次數(shù),保存到slices中即可。用數(shù)列中的統(tǒng)計方法 list.count()即可。

主要就是增加兩行代碼:

new_slices=[] # 新建一個數(shù)列

while side <= max_result: 
    side += 1 
    new_bins.append(side) #這是之前做柱狀圖需要用到的
    new_slices.append( results.count(int(side))  ) #將保存兩色子之和的數(shù)列,直接進行統(tǒng)計,results.count(int(side))就是在results的數(shù)列中統(tǒng)計出現(xiàn)side的次數(shù)。

運行結果,一樣也是顯示出點數(shù)之和7,8,9的出現(xiàn)的次數(shù)最多,然后逐漸減?。?/p>

總之,餅圖通過將一個圓按照分類的占比劃分成多個區(qū)塊,整個圓餅代表數(shù)據(jù)的總量,每個區(qū)塊表示該分類占總體的比例大小,所有區(qū)塊的加和等于100%。

三、 堆疊圖

使用matplotlib中的stackplot()函數(shù)可以快速繪制堆積圖,stackplot()函數(shù)的語法格式如下所示

stackplot(x, y, labels=(), baseling='zero', data=None, *args, **kwargs)

該函數(shù)常用參數(shù)的含義如下   

x:表示x軸的數(shù)據(jù),可以是一維數(shù)組。   

y:表示y軸的數(shù)據(jù),可以是二維數(shù)組或一維數(shù)組序列。  

labels:表示每組折線及填充區(qū)域的標簽。   

baseline:表示計算基線的方法,包括'zero'、'sym'、'wiggle'和'weighted_wiggle'。

其中:

'zero'表示恒定零基線,即簡單的堆積圖;

'sym'表示對稱于零基線;

'wiggle'表示最小化平方斜率的總和;

'weighted_wiggle'表示執(zhí)行相同的操作,但權重用于說明每層的大小。

用同一個例子來看一下堆疊圖的效果,代碼如下:

import matplotlib.pyplot as plt

days =    [1,2,3,4,5,6,7]

sleeping =[7,8,6,8,7,8,6]
eating  = [2,3,3,3,2,2,2]
working = [7,7,7,8,10,3,4]
studing = [6,4,4,4,3,8,11]
playing = [2,2,4,1,2,3,1]

labellist = ['sleeping','eating','working','studing','playing']
colorlist = ['c','y','b','r','g']

plt.stackplot(days, sleeping,eating,working,studing,playing,labels=labellist,colors=colorlist)
plt.xlabel('x')
plt.ylabel('y')
plt.legend(loc=(0.07, 0.05))
plt.title('Stack Plots')
plt.show()

運行結果如下:

plt.legend()是顯示左下角的標簽。而語句plt.stackplot()函數(shù)中的sleeping,eating,working,studing,playing是一維數(shù)組序列,即stackplot(x,y……)中的y值,是一系列一維數(shù)據(jù)。

 很明顯,通過上述餅圖與堆疊圖的對比,它們的區(qū)別:餅圖只能展示一段時間里,某個項目所花時間占總時間的比,而堆疊圖可以展示這一段時間里,每天各項所花費時間。

既然sleeping,eating,working,studing,playing形成的一維數(shù)組,感覺參數(shù)比較多,那直接形成一個二維數(shù)組如何?做如下修改:

days =    [1,2,3,4,5,6,7]
"""
sleeping =[7,8,6,8,7,8,6]
eating  = [2,3,3,3,2,2,2]
working = [7,7,7,8,10,3,4]
studing = [6,4,4,4,3,8,11]
playing = [2,2,4,1,2,3,1]
"""
times =[                   # 二維數(shù)組,以數(shù)列作為元素的數(shù)列。
        [7,8,6,8,7,8,6],   #上述sleeping數(shù)列
        [2,3,3,3,2,2,2],
        [7,7,7,8,10,3,4],
        [6,4,4,4,3,8,11],
        [2,2,4,1,2,3,1]
        ]
plt.stackplot(days, times,labels=labellist,colors=colorlist)

運行結果如圖:

效果與原來的一維數(shù)組一樣。

但手工這樣編程的時候錄入數(shù)據(jù)太過麻煩,下篇介紹直接讀取文件數(shù)據(jù)并進行處理。

以上就是Python+matplotlib繪制餅圖和堆疊圖的詳細內(nèi)容,更多關于Python matplotlib餅圖 堆疊圖的資料請關注腳本之家其它相關文章!

相關文章

  • Python取讀csv文件做dbscan分析

    Python取讀csv文件做dbscan分析

    這篇文章主要介紹了Python取讀csv文件做dbscan分析,讀取csv文件中相應的列,然后進行轉化,處理為本算法需要的格式,然后進行dbscan運算,下面文章的具體介紹需要的小伙伴可以參考一下
    2022-04-04
  • Python用requests庫爬取返回為空的解決辦法

    Python用requests庫爬取返回為空的解決辦法

    這篇文章主要介紹了Python用requests庫爬取返回為空的解決辦法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-02-02
  • Python類綁定方法及非綁定方法實例解析

    Python類綁定方法及非綁定方法實例解析

    這篇文章主要介紹了Python類綁定方法及非綁定方法實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-10-10
  • 使用Python操作FTP實現(xiàn)上傳和下載的方法

    使用Python操作FTP實現(xiàn)上傳和下載的方法

    今天小編就為大家分享一篇關于使用Python操作FTP實現(xiàn)上傳和下載的方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-04-04
  • python爬取哈爾濱天氣信息

    python爬取哈爾濱天氣信息

    這篇文章主要為大家詳細介紹了python爬蟲抓取哈爾濱天氣信息,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Python DataFrame 設置輸出不顯示index(索引)值的方法

    Python DataFrame 設置輸出不顯示index(索引)值的方法

    今天小編就為大家分享一篇Python DataFrame 設置輸出不顯示index(索引)值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-06-06
  • 選擇python進行數(shù)據(jù)分析的理由和優(yōu)勢

    選擇python進行數(shù)據(jù)分析的理由和優(yōu)勢

    在本篇文章中小編給大家整理了關于選擇python進行數(shù)據(jù)分析的理由和優(yōu)勢,對此有需要的朋友們可以跟著學習參考下。
    2019-06-06
  • Python使用列表和字典實現(xiàn)簡單的考試系統(tǒng)詳解

    Python使用列表和字典實現(xiàn)簡單的考試系統(tǒng)詳解

    這篇文章主要介紹了Python使用列表和字典實現(xiàn)簡單的考試系統(tǒng),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧
    2023-01-01
  • python try 異常處理(史上最全)

    python try 異常處理(史上最全)

    為了處理異常,我們使用try...except,這篇文章主要介紹了python try 異常處理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • 淺談如何使用python抓取網(wǎng)頁中的動態(tài)數(shù)據(jù)實現(xiàn)

    淺談如何使用python抓取網(wǎng)頁中的動態(tài)數(shù)據(jù)實現(xiàn)

    這篇文章主要介紹了淺談如何使用python抓取網(wǎng)頁中的動態(tài)數(shù)據(jù)實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08

最新評論