Matplotlib數據可視化:餅圖與箱線圖

2021-01-11 騰訊網

from matplotlib import pyplot as plt

import numpy as np

import matplotlib as mpl

mpl.rcParams['font.sans-serif'] = ['SimHei'] # 中文字體支持

1 餅圖-pie()

1.1 pie()方法參數說明

pie()是matplotlib中畫餅圖的方法,其主要參數如下:

1.2 基礎作圖

labels = 'Python組', 'Java組', 'C組', 'Go組'

sizes = [25, 45, 30, 10]

fig = plt.figure(figsize=(8, 4))

ax1 = fig.add_subplot(111)

ax1.pie(sizes, labels=labels)

ax1.axis('equal') # Equal aspect ratio ensures that pie is drawn as a circle.

plt.show()

1.3 字符標籤與數值標籤

labels = 'Python組', 'Java組', 'C組', 'Go組'

sizes = [25, 45, 30, 10]

fig = plt.figure(figsize=(8, 4))

ax1 = fig.add_subplot(121)

ax1.pie(sizes,

labels=labels, # 字符標籤

labeldistance=1.1, # 字符標籤到中心點的距離

autopct='%1.1f%%', # 顯示數值標籤

pctdistance=0.5 #數值標籤到中心點的距離

)

ax2 = fig.add_subplot(122)

ax2.pie(sizes,

labels=labels, # 字符標籤

labeldistance=0.4, # 字符標籤到中心點的距離

autopct='%1.2f%%', # 顯示數值標籤

pctdistance=1.2, #數值標籤到中心點的距離

rotatelabels=True # 旋轉標籤

)

plt.show()

1.4 扇形分隔距離

labels = 'Python組', 'Java組', 'C組', 'Go組'

sizes = [25, 45, 30, 10]

fig = plt.figure(figsize=(8, 4))

explode1 = (0.1, 0.1, 0.1, 0.1)

ax1 = fig.add_subplot(121)

ax1.pie(sizes, explode=explode1, # 分隔扇形

labels=labels, autopct='%1.1f%%')

explode2 = (0.1, 0, 0, 0)

ax2 = fig.add_subplot(122)

ax2.pie(sizes, explode=explode2, # 分隔扇形

labels=labels, autopct='%1.1f%%')

plt.show()

1.5 陰影與邊框

labels = 'Python組', 'Java組', 'C組', 'Go組'

sizes = [25, 45, 30, 10]

explode = (0.1, 0, 0, 0)

fig1, ax1 = plt.subplots()

ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',

shadow=True, # 顯示陰影

wedgeprops = {'linewidth': 3} # 設置邊框寬度

)

plt.show()

1.6 旋轉圖形

labels = 'Python組', 'Java組', 'C組', 'Go組'

sizes = [25, 45, 30, 10]

explode = (0.1, 0, 0, 0)

fig1, ax1 = plt.subplots()

ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%',

shadow=True,

startangle=90 # 旋轉

)

plt.show()

1.7 單獨設置某一扇形

pie()方法返回一個tuple,第一個元素為每個扇形對象組成的list,第二個元素為每個扇形的標籤Text對象,第三個元素為每個扇形的數值標籤對象,通過這三個對象,可以實現對單一扇形的設置。

labels = 'Python組', 'Java組', 'C組', 'Go組'

sizes = [25, 45, 30, 10]

explode = (0.1, 0, 0, 0)

fig1, ax1 = plt.subplots()

patches, texts, autotexts = ax1.pie(sizes, explode=explode, labels=labels, autopct='%1.1f%%')

print('第1個返回值:',patches)

print('第2個返回值:',texts)

print('第3個返回值:',autotexts)

texts[0].set_color('red') # 設置第一個扇形的字符標籤字體顏色

texts[0].set_fontsize(30) # 設置第一個扇形的字符標籤字體大小

autotexts[0].set_color('white') # 設置第一個扇形的數值標籤字體顏色

plt.show()

第1個返回值:[, , , ]

第2個返回值:[Text(0.9068994725035225, 0.7858329000320824, 'Python組'), Text(-1.0005952104475537, 0.4569564802357176, 'Java組'), Text(0.15654637770487598, -1.0888035780743386, 'C組'), Text(1.055442297353649, -0.30990572269135586, 'Go組')]

第3個返回值:[Text(0.5290246922937214, 0.4584025250187147, '22.7%'), Text(-0.5457792056986657, 0.2492489892194823, '40.9%'), Text(0.0853889332935687, -0.593892860767821, '27.3%'), Text(0.5756957985565357, -0.1690394851043759, '9.1%')]

labels = 'Python組', 'Java組', 'C組', 'Go組'

sizes = [25, 45, 30, 10]

explode = (0.1, 0, 0, 0)

fig1, ax1 = plt.subplots(figsize=(5, 5))

patches, texts, autotexts = ax1.pie(sizes, explode=explode, autopct='%1.1f%%')

ax1.legend(patches, labels, loc="upper right",bbox_to_anchor=(0.75, 0, 0.5, 0.4))

plt.show()

1.8 嵌套餅圖

sizes = {

'Python組':{'男':10, '女': 15},

'Java組':{'男':15, '女': 30},

'C組':{'男':5, '女': 25},

'Go組':{'男':4, '女': 6}

}

def func(sizes):

"""提取數據和標籤"""

data1 = []

data2 = []

data2_label = []

for key in sizes.keys():

data1.append(sizes.get(key).get('男') + sizes.get(key).get('女'))

data2.append(sizes.get(key).get('男'))

data2_label.append(key+'-'+'男')

data2.append(sizes.get(key).get('女'))

data2_label.append(key+'-'+'女')

return data1, data2, sizes.keys(), data2_label

data1, data2, data1_label, data2_label = func(sizes)

cmap = plt.get_cmap("tab20c")

outer_colors = cmap(np.arange(4)*4)

inner_colors = cmap(np.array([1, 2, 5, 6, 9, 10, 13, 14]))

fig = plt.figure(figsize=(10, 4))

ax1 = fig.add_subplot(121)

ax1.pie(data1, labels=data1_label, radius=1.5, colors=outer_colors, autopct='%1.1f%%', labeldistance=1, pctdistance=0.8)

ax1.pie(data2, labels=data2_label, radius=1, colors=inner_colors, autopct='%1.1f%%', labeldistance=0.4, pctdistance=0.9)

ax2 = fig.add_subplot(122)

ax2.pie(data1, labels=data1_label, radius=1.5, colors=outer_colors, autopct='%1.1f%%', labeldistance=1, pctdistance=0.8,wedgeprops=dict(width=0.8, edgecolor='w'))

ax2.pie(data2, labels=data2_label, radius=1, colors=inner_colors, autopct='%1.1f%%', labeldistance=0.4, pctdistance=0.9,wedgeprops=dict(width=0.6, edgecolor='w'))

plt.show()

2 箱線圖

2.1 參數說明

matplotlib繪製箱線圖通過boxplot()方法實現,主要參數如下:

boxplot()方法返回值是一個dict,鍵值包括'whiskers'、'caps'、'boxes'、'fliers'、'means',分別表示須線、頂端末端線段、箱體、異常數據、均值等繪圖對象分別組成的列表,通過這些對象可以橫放把您的實現箱線圖各個部分的自定義設置。

2.2 基礎作圖

data=np.random.normal(0,4,100)

fig = plt.figure(figsize=(8, 8))

ax1 = fig.add_subplot(221)

ax1.set_title('圖1 常規作圖')

ax1.boxplot(data)

muti_data=[np.random.normal(0,std,100) for std in range(1,4)]

ax2 = fig.add_subplot(222)

ax2.set_title('圖2 多圖繪製')

ax2.boxplot(muti_data)

ax3 = fig.add_subplot(223)

ax3.set_title('圖3 水平箱線圖')

ax3.boxplot(data, vert=False)

ax4 = fig.add_subplot(224)

ax4.set_title('圖4 中間凹陷')

ax4.boxplot(data, notch=True)

plt.show()

2.3 修改標籤

data=np.random.normal(0,4,100)

fig = plt.figure(figsize=(8, 4))

muti_data=[np.random.normal(0,std,100) for std in range(1,4)]

ax2 = fig.add_subplot(121)

ax2.set_title('圖1')

ax2.boxplot(muti_data, labels=['第1組', '第2組', '第3組'])

muti_data=[np.random.normal(0,std,100) for std in range(1,4)]

ax2 = fig.add_subplot(122)

ax2.set_title('圖2')

ax2.boxplot(muti_data, vert=False, labels=['第1組', '第2組', '第3組'])

plt.show()

2.4 顯示均值

data=np.random.normal(0,4,100)

fig = plt.figure(figsize=(8, 4))

muti_data=[np.random.normal(0,std,100) for std in range(1,4)]

ax2 = fig.add_subplot(121)

ax2.set_title('圖1')

ax2.boxplot(muti_data, labels=['第1組', '第2組', '第3組'], showmeans=True) # 顯示均值,默認以點的方式顯示

muti_data=[np.random.normal(0,std,100) for std in range(1,4)]

ax2 = fig.add_subplot(122)

ax2.set_title('圖2')

ax2.boxplot(muti_data, labels=['第1組', '第2組', '第3組'], showmeans=True, meanline=True) # 顯示均值,並以橫線方式顯示

plt.show()

2.5 箱體設置

data=np.random.normal(0,4,100)

fig = plt.figure(figsize=(8, 4))

muti_data=[np.random.normal(0,std,100) for std in range(1,4)]

ax2 = fig.add_subplot(121)

ax2.set_title('圖1')

box_dict = ax2.boxplot(muti_data, labels=['第1組', '第2組', '第3組'], patch_artist=True) # 注意,patch_artist一定要設置為True,下面的設置才會生效

box_dict.get('boxes')[0].set_color('red') # 箱體邊框顏色

box_dict.get('boxes')[1].set_color('blue')

box_dict.get('boxes')[2].set_color('green')

plt.show()

作者:奧辰

Github:https://github.com/ChenHuabin321

https://www.cnblogs.com/chenhuabin

相關焦點

  • matplotlib的Python數據可視化和探索——入門指南
    這是我們將使用matplotlib設計的可視化條狀圖餅形圖箱形圖直方圖折線圖和子圖散點圖了解數據集和問題陳述在介紹不同的可視化和圖表類型之前,我想花一些時間來理解數據。這是機器學習流程中的關鍵部分,我們應該充分注意它。我們將在此matplotlib教程中分析「 食品需求預測」項目。
  • 看了這個總結,其實 Matplotlib 可視化,也沒那麼難!
    作者 | 舊時晚風拂曉城 來源 | 傑哥的IT之旅(ID:Jake_Internet)頭圖 | CSDN 下載自東方IC公眾號「傑哥的IT之旅」後臺回覆:「matplotlib數據可視化」,獲取本文完整數據集。Python 中可以通過 matplotlib 模塊的 pyplot 子庫來完成繪圖。
  • 散點圖、箱線圖、核密度函數……數據分析必備的9種可視化圖表
    ,可視化技術可是數據科學家的必備技能之一。餅狀圖可以使用餅狀圖來可視化目標變量的類計數。我們將在這裡對正在處理的Iris數據集進行處理。同樣需要一些輔助函數,這次使用的是groupby和count。df.groupby('species').mean().plot.bar()上圖非常直觀,可以看到不同類型和不同柱的平均測量值存在差異。箱線圖箱線圖也是應該用於數值變量的可視化技術。
  • Python可視化很簡單,一文教你繪製餅圖、極線圖和氣泡圖
    matplotlib庫作為Python數據化可視化的最經典和最常用庫,掌握了它就相當於學會了Python的數據化可視化,上次呢,已經和大家聊了關於柱狀圖、條形圖和直方圖相關的東東,相信大家已經掌握了哈,那今天呢,咱們再繼續聊哦,一起聊聊關於Python如何繪製餅圖、極線圖和氣泡圖吧!好啦,廢話少說,咱們就開始吧!
  • 手把手教你用Matplotlib進行數據可視化
    假設我們要繪製正弦函數sin(x)的一個簡單線圖。我們希望函數求x軸(0≤x≤10)上的所有值。要顯示繪圖,你需要在啟動IPython之後,調用%matplotlib魔術命令:%matplotlib  Using matplotlib backend: Qt5Agg   import matplotlib.pyplot as plt 然後,所有圖都會自動顯示出來,不必每次都調用plt.show()。3.
  • 一文學會用Python繪製經典的棉棒圖、箱線圖和誤差棒圖
    這幾天一直在和大家聊Python數據可視化相關的東東,其中呢,介紹最多的當然是matplotlib庫中的各種繪製函數啦,上次已經和大家談論了關於Python中如何繪製氣泡圖等漂亮圖表的方式,今天呢,咱們繼續聊哦,今天呢,咱們就來聊聊如何繪製經典的棉棒圖、箱線圖和誤差棒圖
  • 如何用matplotlib繪圖呢?
    什麼是matplotlib?使用過python做數據分析的小夥伴都知道,matplotlib是一款命令式、較底層、可定製性強、圖表資源豐富、簡單易用、出版質量級別的python 2D繪圖庫。matplotlib算是python繪圖的元老級庫,類似程式語言裡的C語言。很多其它的python繪圖庫是基於matplotlib開發的,比如seaborn、ggplot、plotnine、holoviews、basemap等。matplotlib可用於python腳本、python shell、jupyter notebook、web等。
  • 有這5小段代碼在手,輕鬆實現數據可視化(Python+Matplotlib)
    大數據文摘作品編譯:傅一洋、吳雙、龍牧雪本文要講的是Matplotlib,一個強大的Python可視化庫。一共5小段代碼,輕鬆實現散點圖、折線圖、直方圖、柱狀圖、箱線圖,每段代碼只有10行,也是再簡單不過了吧!數據可視化是數據科學家工作的一項主要任務。
  • 從零開始學Python可視化(二):掌握統計圖形的繪製
    餅圖 —— pie()餅圖主要用於繪製不同類型的百分比,比如不同國家的人口佔比、一個員工的薪資構成等。import matplotlib.pyplot as pltimport numpy as np# 生成數據theta = np.linspace(0, 2*np.pi, 12, endpoint=False)r = np.random.rand(12)# 極線圖plt.polar(theta, r, color = 'chartreuse', linewidth
  • python學習筆記:同時畫多圖,折線圖,箱線圖,條形圖,柱狀圖等
    1.同時畫六張圖#從Matplotlib中導入了pyplot繪圖模塊from matplotlib.pyplot import *#設置相關的數值x=[1,2,3,4]y=[5,4,3,2]#創建一個圖紙(figure)figure()#使用subplot創建多個子圖,下面的subplot(2,3,1)表示創建一個包含2行3列圖表的圖紙,1表示第一張圖subplot
  • 技能分享|Python數據可視化利器:Seaborn使用方法(一)
    本篇我們的主題是數據可視化的利器——seaborn庫的使用。Seaborn是基於matplotlib,在matplotlib的基礎上進行了更高級的API封裝,便於用戶可以更加簡便地做出各種有吸引力的統計圖表。
  • 使用Matplotlib可視化數據的5個強大技巧
    數據可視化用於以更直接的表示方式顯示數據,並且更易於理解。它可以用柱狀圖、散點圖、折線圖、餅圖等形式形成。許多人仍然使用Matplotlib作為後端模塊來可視化他們的圖形。在這個故事中,我將給你一些技巧,使用Matplotlib創建一個優秀圖表的5個強大技巧。1.
  • Python數據可視化技能提升—用好matplotlib第1篇
    好啦,既然有朋友提出需要來啦,那今天咱們就聊點Python數據可視化相關的東東吧,說到Python的數據可視化呢,就必須提Python的一個庫哦,它就是大名鼎鼎的matplotlib庫,也是目前用得最多的Python數據可視化庫哦,matplotlib其實把MatLab的很多優點都借鑑了過來,所以呢,熟悉MatLab的朋友,對於matplotlib是上手很快的哦!
  • 30分鐘入門 Matplotlib 繪圖
    數據可視化是數據分析的重要環節,藉助圖形能夠幫助更加直觀地表達出數據背後的」東西」。Matplolib最初主要模仿Matlab的畫圖命令,但是它是獨立於Matlab的,可以自由、免費使用的繪圖包。Matplotlib依賴於之前介紹的Numpy庫來提供出色的繪圖能力。
  • 這麼用MatPlotLib視覺化呈現數據,你值得擁有!
    conda install PackageName對於Matpotlib工具:conda install matplotlib不同類型的Matpolotlib工具提供的功能不同:1. 線、條、標誌2. 圖像、輪廓、場3. 餅狀圖、極坐標圖4. 統計性繪圖以及許多其它功能。
  • 數據可視化最有價值的50個圖表 | 網際網路數據資訊網-199IT | 中文...
    Tips:本文原文部分代碼有不準確的地方,已進行修改;所有正確的原始碼,已整合到 jupyter notebook 文件中;運行本文代碼,除了安裝 matplotlib 和 seaborn 可視化庫外,還需要安裝其他的一些輔助可視化庫
  • 未明學院:Python可視化庫Matplotlib繪圖入門詳解
    Matplotlib是Python的繪圖庫,其中的pyplot包封裝了很多畫圖的函數。Matplotlib.pyplot 包含一系列類似 MATLAB 中繪圖函數的相關函數。繪製線圖plt.plot() 函數可以用來繪製線型圖:1、基本用法指定x和yplt.plot(x,y)默認參數,x 為 0~N-1plt.plot(y)因此,在上面的例子中,我們沒有給定 x 的值,所以其默認值為 [0,1,2,3]。
  • 提高編程能力:Python數據可視化技能提升——好matplotlib第2篇
    上次已經和大家聊了Python數據可視化的經典庫:matplotlib,大家已經知道啦,matplotlib庫是Python中用於繪製二維、三維等這些圖表的數據可視化工具,並且已經和大家聊完了關於matplotlib庫的安裝啦、還有matplotlib庫的兩個函數,分別是plot()函數和scatter()函數哦,相信大家已經對於這兩個函數的用法掌握啦,在這就不多說了哈,如果還想繼續了解
  • matplotlib繪圖的核心原理講解
    作者:朱小五來自:凹凸數據(ID:alltodata)matplotlib是基於Python語言的開源項目,旨在為Python提供一個數據繪圖包。相信大家都用過它來數據可視化,之前我還分享過25個常用Matplotlib圖的Python代碼。可是你了解過它繪圖的核心原理嗎?
  • 50種常用的matplotlib可視化,再也不用擔心模型背著我亂跑了
    機器之心報導參與:思源數據分析與機器學習中常需要大量的可視化,因此才能直觀了解模型背地裡都幹了些什麼。而在可視化中,matplotlib 算得上是最常用的工具,不論是對數據有個預先的整體了解,還是可視化預測效果,matplotlib 都是不可缺失的模塊。