有個(gè)朋友要求幫忙繪制堆疊柱狀圖,查閱了一些文檔之后也算是完成了,只是一個(gè)小demo,下面我就記錄一下。
1.什么是堆疊柱狀圖
與并排顯示分類的分組柱狀圖不同,堆疊柱狀圖將每個(gè)柱子進(jìn)行分割以顯示相同類型下各個(gè)數(shù)據(jù)的大小情況。它可以形象的展示一個(gè)大分類包含的每個(gè)小分類的數(shù)據(jù),以及各個(gè)小分類的占比,顯示的是單個(gè)項(xiàng)目與整體之間的關(guān)系。效果圖如下:
2.數(shù)據(jù)展示
這里展示了部分?jǐn)?shù)據(jù),主要是treatment就是對(duì)應(yīng)的上圖分類一,分類二;species就是對(duì)應(yīng)的分組;ra就是對(duì)應(yīng)的各個(gè)分組的比例。
3.Python代碼
from matplotlib import pyplot as plt import pandas as pd import xlrd import numpy as np data = xlrd.open_workbook('ccc.xlsx') #打開(kāi)數(shù)據(jù) table = data.sheet_by_index(0) #獲取sheet1的數(shù)據(jù) nrows = table.nrows #獲取sheet1中的行 plot_list = ['plot1'] plot1_ra_list = [[0] for i in range(17)]#構(gòu)建一個(gè)17X1的列表 i = 0 for row in range(1,nrows): #循環(huán)讀取表內(nèi)數(shù)據(jù) if table.cell(row,0).value == 2015.0 and table.cell(row,1).value == 'plot1': print(table.cell(row, 3).value) #第三列是各個(gè)元素所占的比例 print(i) plot1_ra_list[i][0]=(float(table.cell(row, 3).value)) i+=1 #顏色列表 color = ['y','r','snow','b','k','g','orange','c','bisque','brown','lime','aqua','coral','darkcyan','gold','teal','pink',] plt.figure(figsize=(8,6)) for i in range(17): plt.bar(range(len(plot1_ra_list[i])), plot1_ra_list[i],bottom=np.sum(plot1_ra_list[:i],axis = 0),label=str(i+1),tick_label = plot_list,fc = color[i]) plt.legend() plt.show()
4.效果展示
上述代碼我只做了2015年的plot1,如果要把plot2增加上注意要對(duì)齊plot1和plot2的species數(shù)量,可以認(rèn)為的添加,并補(bǔ)充對(duì)應(yīng)的ra為0,這樣子也不影響整個(gè)做圖。下面我PO一張demo。
以上這篇Python繪制堆疊柱狀圖的實(shí)例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
