從零開始學Python視覺化(五): 餅圖及環形圖
我們之前已經接觸過了餅圖,它主要用於表現比例、份額類的資料,今天我們在樣式上進行更多的探索。
我們以筆記本行業來作為例子。假設膝上型電腦行業有ABCD五家公司,他們在2017年的國內市場份額分別為45%、25%、15%、5%,其他公司10%。
歡迎大家關注我的個人部落格【數洞】 【備用站】
一、分裂餅圖
首先,我們可以將我們關注的分類單獨分裂出來,達到突出顯示的目的。假如我們在B公司裡,我們想要將自家公司的資料單獨拆出來:
import matplotlib as mpl
import matplotlib.pyplot as plt
# 生成資料
labels = ['A', 'B', 'C', 'D', '其他']
share = [0.45, 0.25, 0.15, 0.05, 0.10]
# 設定分裂屬性
explode = [0, 0.1, 0, 0, 0]
# 分裂餅圖
plt.pie(share, explode = explode,
labels = labels, autopct = '%3.1f%%',
startangle = 180, shadow = True,
colors = ['c', 'r', 'gray', 'g', 'y'])
# 標題
plt.title('2017年膝上型電腦市場份額')
plt.show()
可以看到,我們將自家公司的份額分裂出來了,這樣我們就能迅速定位到圖中最重要的部分。至於非分裂式的餅圖,直接將explode引數列表中的所有數都設定為0即可。
我們看下這些引數的作用:
- explode:一個列表,用於指定每塊餅片邊緣偏離半徑的百分比
- labels:每份餅片的標籤
- autopct:數值百分比的樣式
- startangle:起始角度,跟四象限的角度一致
- shadow:是否繪製陰影
- colors:餅片的顏色
二、內嵌環形餅圖
好,現在這幾家公司同時也在做PC市場,那我們想同時將PC市場的份額情況也展示出來,這時候,我們就可以考慮內嵌環形餅圖。
假設他們四家在2017年佔有的PC市場份額分別是35%、35%、8%、7%,其他公司佔有的份額是15%。
import matplotlib as mpl
import matplotlib.pyplot as plt
# 設定圖片大小
plt.figure(figsize = (10, 8))
# 生成資料
labels = ['A', 'B', 'C', 'D', '其他']
share_laptop = [0.45, 0.25, 0.15, 0.05, 0.10]
share_pc = [0.35, 0.35, 0.08, 0.07, 0.15]
colors = ['c', 'r', 'y', 'g', 'gray']
# 外環
wedges1, texts1, autotexts1 = plt.pie(share_laptop,
autopct = '%3.1f%%',
radius = 1,
pctdistance = 0.85,
colors = colors,
startangle = 180,
textprops = {'color': 'w'},
wedgeprops = {'width': 0.3, 'edgecolor': 'w'}
)
# 內環
wedges2, texts2, autotexts2 = plt.pie(share_pc,
autopct = '%3.1f%%',
radius = 0.7,
pctdistance = 0.75,
colors = colors,
startangle = 180,
textprops = {'color': 'w'},
wedgeprops = {'width': 0.3, 'edgecolor': 'w'}
)
# 圖例
plt.legend(wedges1,
labels,
fontsize = 12,
title = '公司列表',
loc = 'center right',
bbox_to_anchor = (1, 0.6))
# 設定文字樣式
plt.setp(autotexts1, size=15, weight='bold')
plt.setp(autotexts2, size=15, weight='bold')
plt.setp(texts1, size=15)
# 標題
plt.title('2017年筆記本及PC電腦市場份額', fontsize=20)
plt.show()
哈,這樣我們就可以很直觀地對比筆記本和PC市場的份額情況了。
這裡我們詳細說一下程式碼。
首先,pie()函式返回三個物件:wedge、text、autotext。
- wedge:是指餅片,也就是每一個扇形
- texts:分類標籤的文字列表
- autotexts:這部分是百分比部分的文字列表
後邊我們設定文字格式的時候會用到pie()函式返回的物件。
在pie()函式中:
- radius:半徑
- pctdistance:餅圖重心到autotexts物件的相對距離
- textprops:餅圖中百分比文字的屬性字典
- wedgeprops:餅圖的格式,這裡我們用width設定了環的寬度,使用edgecolor設定了邊緣顏色
在legend()函式中,我們用fontsize設定文字大小,用title設定圖例的標題,用loc設定圖例的位置,用bbox_to_anchor設定了圖例的位置。
相關文章
- matplotlib視覺化番外篇pie()--內嵌環形餅圖視覺化
- 從零開始學機器學習——聚類視覺化機器學習聚類視覺化
- 從零開始學習時空資料視覺化(序)視覺化
- 從零開始學機器學習——準備和視覺化資料機器學習視覺化
- Python資料處理從零開始----第四章(視覺化)(5)(韋恩圖)Python視覺化
- 前端之圖形學-1 資料視覺化前端視覺化
- 資料視覺化Seaborn從零開始學習教程(三) 資料分佈視覺化篇視覺化
- python資料視覺化-matplotlib入門(5)-餅圖和堆疊圖Python視覺化
- 圖形演算法視覺化演算法視覺化
- 分形、分形幾何、資料視覺化、Python繪圖視覺化Python繪圖
- 從零開始學PythonPython
- Tableau——資料前處理、折線圖、餅圖(環形圖)
- 從零開始學Electron筆記(五)筆記
- 從零開始學java(五)運算子Java
- 從零開始學五筆(一):概述
- 從零開始學五筆(五):撇區字根
- Java 在Excel中新增分離型餅圖、環形圖JavaExcel
- 從Python開始——圖靈圖書學習路線Python圖靈
- 資料視覺化Seaborn從零開始學習教程(一) 風格選擇視覺化
- 從零開始學Python資料分析【17】-- matplotlib(面積圖)Python
- 從零開始學golang之圖-鄰接矩陣Golang矩陣
- 資料視覺化Seaborn從零開始學習教程(二) 顏色調控篇視覺化
- 視覺化學習:圖形系統中的顏色表示視覺化
- 從零開始做一個SLG遊戲(三):用unity繪製圖形遊戲Unity
- Python繪圖與視覺化Python繪圖視覺化
- Python視覺化-氣泡圖Python視覺化
- Python視覺化-折線圖Python視覺化
- Python視覺化-地圖染色Python視覺化地圖
- 資料視覺化初探-從零開始開發一個渲染引擎概述視覺化
- 網站地圖視覺化圖形生成器:SlickMap CSS網站地圖視覺化CSS
- python資料視覺化-matplotlib入門(4)-條形圖和直方圖Python視覺化直方圖
- 資料視覺化常用圖形都有哪些(一)視覺化
- 資料視覺化常用圖形都有哪些(二)視覺化
- 資料視覺化常用圖形都有哪些(三)視覺化
- 資料視覺化常用圖形都有哪些(四)視覺化
- SoviChart資料視覺化:條形圖(Bar chart)視覺化
- 從零開始學五筆(三):橫區字根
- 從零開始學五筆(四):豎區字根