Python繪制組合圖的示例
繪制組合圖:
組合圖就是將多個形狀,組合到⼀個圖形中,主要作⽤是節(jié)約作圖的空間,節(jié)省讀者的時間,從⽽提⾼
信息傳達(dá)的效率。
import pandas as pd import numpy as np import matplotlib.pyplot as plt def plot_combination1(): sale = pd.read_excel('./data/每月目標(biāo)銷售額和實(shí)際銷售額.xlsx',header=0,index_col=0) # 設(shè)置正常顯示中文標(biāo)簽 plt.rcParams['font.sans-serif'] = ['SimHei'] # 正常顯示負(fù)號 plt.rcParams['axes.unicode_minus'] = False # 設(shè)置字體大小 plt.rcParams.update({'font.size':16}) # 提取數(shù)據(jù) x = np.arange(12)+1 y1 = sale.目標(biāo)銷售額 y2 = sale.實(shí)際銷售額 # 計(jì)算目標(biāo)完成率 y3 = y2/y1 # float # print(y3) 1月 1.120000 2月 0.887500 3月 1.118182 4月 1.150000 """ 第一種方式:是⽤兩個不同顏⾊的柱⼦,分別展示每個⽉的實(shí)際銷售額和⽬標(biāo)銷售額, ⽤折線圖展示⽬標(biāo)完成率。 左邊的主坐標(biāo)軸是柱形圖對應(yīng)的數(shù)據(jù),右邊的次坐標(biāo)軸是折線圖對應(yīng)的 數(shù)據(jù),下邊的橫坐標(biāo)軸表示細(xì)分的維度,⽐如時間、地區(qū)、渠道等。 """ plt.figure(figsize=(16,8)) plt.subplot(111) # 柱形寬度 bar_width = 0.35 # 在主坐標(biāo)軸繪制柱形圖 plt.bar(x,y1,bar_width,label='目標(biāo)銷售額') plt.bar(x+bar_width,y2,bar_width,label='實(shí)際銷售額') # 設(shè)置坐標(biāo)軸的取值范圍,避免柱子過高而與圖例重疊 plt.ylim(0,max(y1.max(),y2.max())*1.2) # 設(shè)置圖例 plt.legend(loc='upper left') # 設(shè)置橫坐標(biāo)的標(biāo)簽 plt.xticks(x) # plt.set_xticklabels(sale.index) # 在次坐標(biāo)軸上繪制折線圖 plt.twinx() # ls:線的類型,lw:寬度,o:在頂點(diǎn)處實(shí)心圈 plt.plot(x,y3,ls='-',lw=2,color='r',marker='o',label='目標(biāo)完成率') # 設(shè)置次坐標(biāo)軸的取值范圍,避免折線圖波動過大 plt.ylim(0,1.35) # 設(shè)置圖例 plt.legend() # 定義顯示百分號的函數(shù) def to_percent(number, position=0): return '%.f' % (number * 100) + '%' # 次坐標(biāo)軸的標(biāo)簽顯示百分號 FuncFormatter:自定義格式函數(shù)包 from matplotlib.ticker import FuncFormatter plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent)) # 設(shè)置標(biāo)題 plt.title('\n每月銷售目標(biāo)達(dá)成情況\n',fontsize=36,loc='center',color = 'k') plt.show() def plot_combination2(): """ 第二種方式:是⽤兩條不同顏⾊的折線,分別展示每個⽉的實(shí)際銷售額和⽬標(biāo)銷售額,再⽤兩種不同顏 ⾊的柱形圖展示實(shí)際與⽬標(biāo)的差額,綠⾊代表完成⽬標(biāo),紅⾊代表沒有完成⽬標(biāo), 這種組合圖不需要⽤到兩個縱坐標(biāo)軸, """ import pandas as pd import numpy as np import matplotlib.pyplot as plt # 設(shè)置正常顯示中⽂標(biāo)簽 plt.rcParams['font.sans-serif'] = ['SimHei'] # 正常顯示負(fù)號 plt.rcParams['axes.unicode_minus'] = False # 設(shè)置字體⼤⼩ plt.rcParams.update({'font.size': 16}) # 從 Excel ⽂件中讀取數(shù)據(jù),第⼀列設(shè)置為索引 sale = pd.read_excel('./data/每月目標(biāo)銷售額和實(shí)際銷售額.xlsx', index_col=0) # 提取數(shù)據(jù) # print('index') x = sale.index # Index(['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'], dtype='object', name='month') # print(x) y1 = sale.目標(biāo)銷售額 y2 = sale.實(shí)際銷售額 # 計(jì)算差額 y3 = y2 - y1 # 繪制折線圖 plt.figure(figsize=(16, 8)) plt.subplot(111) plt.plot(x, y1, ls='-', lw=2, label='目標(biāo)銷售額') plt.plot(x, y2, ls='--', lw=2, label='實(shí)際銷售額') # ⽤列表推導(dǎo)式定義柱⼦的顏⾊,綠⾊代表完成⽬標(biāo), 紅⾊代表沒有完成⽬標(biāo) color = ['g' if i > 0 else '#dc5034' for i in y3] # 繪制柱形圖 plt.bar(x, y3, color=color, label='差額') # 設(shè)置圖例 plt.legend(loc='upper left') # 設(shè)置標(biāo)題 title = '\n每月銷售目標(biāo)達(dá)成情況\n' plt.title(title, fontsize=36, loc='center', color='k') plt.show() if __name__ == '__main__': plot_combination1() plot_combination2()
繪制結(jié)果:
第一種
第二種:
參考書目:
數(shù)據(jù)化分析 Python 實(shí)戰(zhàn) - 林驥
以上就是Python繪制組合圖的示例的詳細(xì)內(nèi)容,更多關(guān)于Python繪制組合圖的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級隊(duì)列queue用法詳解
queue庫提供了一個適用于多線程編程的先進(jìn)先出(FIFO)數(shù)據(jù)結(jié)構(gòu),可以用來在生產(chǎn)者與消費(fèi)者線程之間安全地傳遞消息或其他數(shù)據(jù),它會為調(diào)用者處理鎖定,使多個線程可以安全而更容易地處理同一個Queue實(shí)例.Queue的大小可能受限,以限制內(nèi)存使用或處理,需要的朋友可以參考下2021-05-0510分鐘教你用Python實(shí)現(xiàn)微信自動回復(fù)功能
今天,我們就來用Python實(shí)現(xiàn)微信的自動回復(fù)功能吧,并且把接收到的消息統(tǒng)一發(fā)送到文件助手里面,方便統(tǒng)一查看。感興趣的朋友跟隨小編一起看看吧2018-11-11python 機(jī)器學(xué)習(xí)之支持向量機(jī)非線性回歸SVR模型
這篇文章主要介紹了python 機(jī)器學(xué)習(xí)之支持向量機(jī)非線性回歸SVR模型,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06Python+Pytest實(shí)現(xiàn)壓力測試詳解
在現(xiàn)代Web應(yīng)用程序中,性能是至關(guān)重要的。為了確保應(yīng)用程序能夠在高負(fù)載下正常運(yùn)行,我們需要進(jìn)行性能測試。本文就來用Pytest進(jìn)行壓力測試,希望對大家有所幫助2023-03-03