堆疊長條圖屬於長條圖的一種,可以做組內、組間比較。
² 組內比較: 同一個長條中不同項目所佔的比重。
² 組間比較:比較不同長條圖中,某一個項目佔的比重大小。
有了基本的概念與構思好主題後,就可以利用python的Plotly套件來繪製簡單的堆疊長條圖了。
🌞操作步驟
1.選定主題,準備素材
以2015年10大癌症診斷的臨床期別分佈為例(資料來源為整理國健署癌症開放資料),來看不同癌症診斷時的期別分佈情況。開始執行前,尚未安裝plotly者需要先安裝plotly套件,在Window環境下,開起命令提示字元,輸入pip
install plotly,安裝完成後,就可進入繪圖步驟。
2.確認繪圖需要用到的參數:
X軸(x): 不同期別所佔的比例(%)
Y軸(y): 各癌症的分類
3.繪製堆疊長條圖
這邊要注意一下,操作時每一個分層要各別建構,再把各分層的圖層結合成一張圖。
import plotly.graph_objs as go
import plotly.offline as py
#分層為stage0
data1= go.Bar(
y=df['stage0_rate'], #y軸欄位
x=df['Cancer'], #x軸欄位
name='stage0') #圖例名稱
#分層為stage1
data2= go.Bar(
y=df['stage1_rate'],
x=df['Cancer'],
name='stage1')
#分層為stage2
data3= go.Bar(
y=df['stage2_rate'],
x=df['Cancer'],
name='stage2')
#分層為stage3
data4= go.Bar(
y=df['stage3_rate'],
x=df['Cancer'],
name='stage3')
#分層為stage4
data5= go.Bar(
y=df['stage4_rate'],
x=df['Cancer'],
name='stage4')
#分層為missing
data6= go.Bar(
y=df['missing_rate'],
x=df['Cancer'],
name='missing')
#把各分層結合
data = [data1, data2,data3,data4,data5,data6]
layout = go.Layout(
barmode='stack', #設定為堆疊長條圖
title='2015年十大癌症診斷期別分佈', titlefont=dict(family='Courier New, monospace', size=22, color='#7f7f7f'), #設定標題名稱、字體大小、顏色
xaxis=dict(
titlefont=dict(
size=16,color='rgb(107, 107, 107)'#設定X軸字體大小、顏色
),
tickfont=dict(
size=16, color='rgb(107, 107, 107)') #設定X軸標籤字體大小、顏色
),
yaxis=dict(
title='百分比 (%)',titlefont=dict(size=18), #設定Y軸名稱、字體大小
tickfont=dict(
size=16, color='rgb(107, 107, 107)'#設定Y軸標籤、字體大小、顏色
)
),margin=go.Margin(l=100,r=60,b=50,t=60,pad=0,) #調整圖表的位子
)
fig = go.Figure(data=data, layout=layout)
py.plot(fig, filename='stacked-bar')
在未經調整的情況下,預設的配色並不美觀,視覺上沒那麼舒適,因此接下來的步驟要調整色彩的配置。
4.調整色彩配置
以下做個演示:
須針對每一個Bar圖分別做色彩調整,以下以stage0圖層為例進行色彩調整。
data1= go.Bar(
y=df['stage0_rate'],
x=df['Cancer'],
name='stage0',
marker=dict(
color='#FEDFE1'))
留言
張貼留言