利用Python繪制帶偏移的餅圖
數(shù)據(jù)可視化的魅力在于讓冰冷的數(shù)字變得直觀易懂,而一點(diǎn)點(diǎn)創(chuàng)意就能讓圖表從 “看得懂” 升級為 “記得住”。今天我們就來探討如何用 Python 的 matplotlib 庫制作帶偏移效果的餅圖,讓重點(diǎn)數(shù)據(jù)從圖表中 “跳出來”,瞬間抓住讀者的注意力。
一、為什么需要偏移效果的餅圖
常規(guī)餅圖能展示各部分的占比關(guān)系,但當(dāng)我們需要強(qiáng)調(diào)某幾個(gè)關(guān)鍵類別時(shí),單純的顏色區(qū)分往往不夠醒目。這時(shí)候,偏移效果就派上用場了 —— 通過將特定扇形從餅圖主體中 “拉開” 一段距離,能自然引導(dǎo)視線聚焦到這些重點(diǎn)數(shù)據(jù)上,讓信息傳遞更高效。
比如在全球森林覆蓋率分析中,南美洲和非洲的森林資源占比顯著領(lǐng)先,我們就可以通過偏移效果突出這兩個(gè)大洲的數(shù)據(jù),讓讀者一眼 get 到核心信息。
二、實(shí)戰(zhàn):制作全球森林覆蓋率偏移餅圖
下面我們一步步實(shí)現(xiàn)這個(gè)帶偏移效果的餅圖,代碼已為你準(zhǔn)備好,每一步都有詳細(xì)解析:
1. 導(dǎo)入必要的庫
首先需要導(dǎo)入 matplotlib(繪圖核心)和 numpy(輔助配色):
import matplotlib.pyplot as plt import numpy as np
2. 準(zhǔn)備數(shù)據(jù)
我們使用全球各大洲的森林覆蓋率百分比數(shù)據(jù),包含兩個(gè)關(guān)鍵部分:
sizes:各部分的數(shù)值(占比)labels:對應(yīng)類別的名稱
# 數(shù)據(jù):全球不同大洲的森林覆蓋率百分比 sizes = [31, 25, 12, 9, 7, 5, 1] labels = ['South America', 'Africa', 'North America', 'Russia', 'Australia', 'Asia', 'Europe']
3. 設(shè)計(jì)配色方案
好的配色能讓圖表既美觀又專業(yè)。這里我們使用 matplotlib 的tab20c配色方案,它能自動為多個(gè)類別生成協(xié)調(diào)且有區(qū)分度的顏色:
colors = plt.cm.tab20c(np.linspace(0, 1, len(sizes))) # 按類別數(shù)量生成對應(yīng)顏色
4. 核心:設(shè)置偏移參數(shù)
這是實(shí)現(xiàn)偏移效果的關(guān)鍵!explode參數(shù)是一個(gè)與sizes長度相同的元組,每個(gè)元素代表對應(yīng)扇形的偏移距離(0 表示不偏移)。我們讓南美洲和非洲偏移 0.05 個(gè)單位,其他保持原位:
explode = (0.05, 0.05, 0, 0, 0, 0, 0) # 索引0(南美洲)和1(非洲)將被偏移
5. 繪制餅圖
調(diào)用plt.pie()函數(shù)繪制圖表,重點(diǎn)關(guān)注explode參數(shù)的應(yīng)用,同時(shí)設(shè)置標(biāo)簽、百分比顯示、起始角度等細(xì)節(jié):
plt.figure(figsize=(10, 7)) # 設(shè)置圖形尺寸為10x7英寸
wedges, texts, autotexts = plt.pie(
sizes,
labels=labels, # 顯示類別標(biāo)簽
colors=colors, # 應(yīng)用前面定義的顏色
startangle=90, # 從90度角開始繪制(讓餅圖更對稱)
autopct='%1.1f%%', # 顯示百分比,保留1位小數(shù)
pctdistance=0.85, # 百分比標(biāo)簽距離圓心的距離(0-1)
explode=explode # 應(yīng)用偏移設(shè)置
)6. 美化與完善
最后添加標(biāo)題、確保餅圖為正圓形,并顯示圖表:
# 設(shè)置標(biāo)題,增加內(nèi)邊距、加粗字體
plt.title('Global Forest Coverage by Continent', pad=20, fontsize=14, fontweight='bold')
plt.axis('equal') # 保證餅圖是圓形(否則可能變成橢圓)
plt.show() # 顯示圖表三、效果解析:偏移帶來的信息聚焦
運(yùn)行上述代碼后,你會看到一個(gè)清晰的餅圖:南美洲(31%)和非洲(25%)的扇形略微向外偏移,與其他大洲形成視覺區(qū)分,如圖所示:

這種設(shè)計(jì)的優(yōu)勢在于:
- 無需文字說明,讀者能立刻識別出這兩個(gè)是重點(diǎn)區(qū)域
- 保留了整體占比關(guān)系(其他大洲的比例仍清晰可見)
- 視覺層次感更強(qiáng),圖表更具吸引力
四、拓展技巧:讓你的偏移餅圖更出彩
動態(tài)調(diào)整偏移距離:偏移值(如 0.05)可以根據(jù)需要修改,值越大偏移越明顯(建議不超過 0.2,否則可能破壞整體感)
多組偏移:可以同時(shí)偏移多個(gè)類別,比如explode=(0.1, 0.1, 0, 0, 0.1, 0, 0),突出多個(gè)重點(diǎn)
美化標(biāo)簽:通過plt.setp()調(diào)整標(biāo)簽字體和顏色,例如:
plt.setp(texts, size=10, color='darkblue') # 類別標(biāo)簽設(shè)為深藍(lán)色 plt.setp(autotexts, size=8, color='white', weight='bold') # 百分比標(biāo)簽白色加粗
五、總結(jié)
帶偏移餅圖的核心在于偏移參數(shù)的使用,通過合理設(shè)置各部分的偏移距離,可以突出展示關(guān)鍵數(shù)據(jù)。整個(gè)實(shí)現(xiàn)過程分為三個(gè)主要步驟:
- 導(dǎo)入庫并準(zhǔn)備數(shù)據(jù)(數(shù)值、標(biāo)簽、顏色)
- 使用
plt.pie()繪制餅圖,重點(diǎn)設(shè)置explode參數(shù)實(shí)現(xiàn)偏移效果 - 完善圖表細(xì)節(jié)(標(biāo)題、形狀校正等)
掌握了這些代碼細(xì)節(jié)后,你可以將這種方法應(yīng)用于任何需要展示比例關(guān)系并突出重點(diǎn)類別的場景,只需替換sizes和labels數(shù)據(jù)即可。
到此這篇關(guān)于利用Python繪制帶偏移的餅圖的文章就介紹到這了,更多相關(guān)Python繪制餅圖內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在PyCharm中找不到Conda創(chuàng)建的環(huán)境的解決方法
本文主要介紹了在PyCharm中找不到Conda創(chuàng)建的環(huán)境的解決方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
django drf框架中的user驗(yàn)證以及JWT拓展的介紹
這篇文章主要介紹了django drf框架中的user驗(yàn)證以及JWT拓展的介紹,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
使用Python實(shí)現(xiàn)IP網(wǎng)絡(luò)掃描工具
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)一個(gè)IP網(wǎng)段掃描工具,可以輕松幫助你檢查每個(gè)網(wǎng)段下的IP是否在線,感興趣的可以了解下2025-01-01
Python實(shí)現(xiàn)GIF動圖加載和降幀的方法詳解
這篇文章主要為大家詳細(xì)介紹了如何利用Python和Pygame實(shí)現(xiàn)GIF動圖加載和降幀的效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-02-02
pandas如何優(yōu)雅的列轉(zhuǎn)行及行轉(zhuǎn)列詳解
我們在做數(shù)據(jù)處理的時(shí)候遇到pandas列轉(zhuǎn)行的問題,這篇文章主要給大家介紹了關(guān)于pandas如何優(yōu)雅的列轉(zhuǎn)行及行轉(zhuǎn)列的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12
python使用numpy讀取、保存txt數(shù)據(jù)的實(shí)例
今天小編就為大家分享一篇python使用numpy讀取、保存txt數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
對python pandas中 inplace 參數(shù)的理解
這篇文章主要介紹了對python pandas中 inplace 參數(shù)的理解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
基于PyQt4和PySide實(shí)現(xiàn)輸入對話框效果
這篇文章主要為大家詳細(xì)介紹了基于PyQt4和PySide實(shí)現(xiàn)輸入對話框效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02

