Python繪制組合圖的示例
繪制組合圖:
組合圖就是將多個(gè)形狀,組合到⼀個(gè)圖形中,主要作⽤是節(jié)約作圖的空間,節(jié)省讀者的時(shí)間,從⽽提⾼
信息傳達(dá)的效率。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
def plot_combination1():
sale = pd.read_excel('./data/每月目標(biāo)銷(xiāo)售額和實(shí)際銷(xiāo)售額.xlsx',header=0,index_col=0)
# 設(shè)置正常顯示中文標(biāo)簽
plt.rcParams['font.sans-serif'] = ['SimHei']
# 正常顯示負(fù)號(hào)
plt.rcParams['axes.unicode_minus'] = False
# 設(shè)置字體大小
plt.rcParams.update({'font.size':16})
# 提取數(shù)據(jù)
x = np.arange(12)+1
y1 = sale.目標(biāo)銷(xiāo)售額
y2 = sale.實(shí)際銷(xiāo)售額
# 計(jì)算目標(biāo)完成率
y3 = y2/y1 # float
# print(y3) 1月 1.120000 2月 0.887500 3月 1.118182 4月 1.150000
"""
第一種方式:是⽤兩個(gè)不同顏⾊的柱⼦,分別展示每個(gè)⽉的實(shí)際銷(xiāo)售額和⽬標(biāo)銷(xiāo)售額,
⽤折線(xiàn)圖展示⽬標(biāo)完成率。
左邊的主坐標(biāo)軸是柱形圖對(duì)應(yīng)的數(shù)據(jù),右邊的次坐標(biāo)軸是折線(xiàn)圖對(duì)應(yīng)的
數(shù)據(jù),下邊的橫坐標(biāo)軸表示細(xì)分的維度,⽐如時(shí)間、地區(qū)、渠道等。
"""
plt.figure(figsize=(16,8))
plt.subplot(111)
# 柱形寬度
bar_width = 0.35
# 在主坐標(biāo)軸繪制柱形圖
plt.bar(x,y1,bar_width,label='目標(biāo)銷(xiāo)售額')
plt.bar(x+bar_width,y2,bar_width,label='實(shí)際銷(xiāo)售額')
# 設(shè)置坐標(biāo)軸的取值范圍,避免柱子過(guò)高而與圖例重疊
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)軸上繪制折線(xiàn)圖
plt.twinx()
# ls:線(xiàn)的類(lèi)型,lw:寬度,o:在頂點(diǎn)處實(shí)心圈
plt.plot(x,y3,ls='-',lw=2,color='r',marker='o',label='目標(biāo)完成率')
# 設(shè)置次坐標(biāo)軸的取值范圍,避免折線(xiàn)圖波動(dòng)過(guò)大
plt.ylim(0,1.35)
# 設(shè)置圖例
plt.legend()
# 定義顯示百分號(hào)的函數(shù)
def to_percent(number, position=0):
return '%.f' % (number * 100) + '%'
# 次坐標(biāo)軸的標(biāo)簽顯示百分號(hào) FuncFormatter:自定義格式函數(shù)包
from matplotlib.ticker import FuncFormatter
plt.gca().yaxis.set_major_formatter(FuncFormatter(to_percent))
# 設(shè)置標(biāo)題
plt.title('\n每月銷(xiāo)售目標(biāo)達(dá)成情況\n',fontsize=36,loc='center',color = 'k')
plt.show()
def plot_combination2():
"""
第二種方式:是⽤兩條不同顏⾊的折線(xiàn),分別展示每個(gè)⽉的實(shí)際銷(xiāo)售額和⽬標(biāo)銷(xiāo)售額,再⽤兩種不同顏
⾊的柱形圖展示實(shí)際與⽬標(biāo)的差額,綠⾊代表完成⽬標(biāo),紅⾊代表沒(méi)有完成⽬標(biāo),
這種組合圖不需要⽤到兩個(gè)縱坐標(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ù)號(hào)
plt.rcParams['axes.unicode_minus'] = False
# 設(shè)置字體⼤⼩
plt.rcParams.update({'font.size': 16})
# 從 Excel ⽂件中讀取數(shù)據(jù),第⼀列設(shè)置為索引
sale = pd.read_excel('./data/每月目標(biāo)銷(xiāo)售額和實(shí)際銷(xiāo)售額.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)銷(xiāo)售額
y2 = sale.實(shí)際銷(xiāo)售額
# 計(jì)算差額
y3 = y2 - y1
# 繪制折線(xiàn)圖
plt.figure(figsize=(16, 8))
plt.subplot(111)
plt.plot(x, y1, ls='-', lw=2, label='目標(biāo)銷(xiāo)售額')
plt.plot(x, y2, ls='--', lw=2, label='實(shí)際銷(xiāo)售額')
# ⽤列表推導(dǎo)式定義柱⼦的顏⾊,綠⾊代表完成⽬標(biāo), 紅⾊代表沒(méi)有完成⽬標(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每月銷(xiāo)售目標(biāo)達(dá)成情況\n'
plt.title(title, fontsize=36, loc='center', color='k')
plt.show()
if __name__ == '__main__':
plot_combination1()
plot_combination2()
繪制結(jié)果:
第一種

第二種:

參考書(shū)目:
數(shù)據(jù)化分析 Python 實(shí)戰(zhàn) - 林驥
以上就是Python繪制組合圖的示例的詳細(xì)內(nèi)容,更多關(guān)于Python繪制組合圖的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python捕獲異常后繼續(xù)執(zhí)行問(wèn)題
這篇文章主要介紹了python捕獲異常后繼續(xù)執(zhí)行問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-09-09
python機(jī)器學(xué)習(xí)理論與實(shí)戰(zhàn)(一)K近鄰法
這篇文章主要為大家詳細(xì)介紹了python機(jī)器學(xué)習(xí)理論與實(shí)戰(zhàn)第一篇,K近鄰法的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-01-01
python接口自動(dòng)化框架實(shí)戰(zhàn)
這篇文章主要介紹了python接口自動(dòng)化框架實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
Python設(shè)計(jì)模式之簡(jiǎn)單工廠模式實(shí)例詳解
這篇文章主要介紹了Python設(shè)計(jì)模式之簡(jiǎn)單工廠模式,結(jié)合實(shí)例形式分析了簡(jiǎn)單工廠模式的概念、原理及相關(guān)使用技巧,需要的朋友可以參考下2019-01-01
利用Python操作消息隊(duì)列RabbitMQ的方法教程
RabbitMQ是一個(gè)在AMQP基礎(chǔ)上完整的,可復(fù)用的企業(yè)消息系統(tǒng)。他遵循Mozilla Public License開(kāi)源協(xié)議。下面這篇文章主要給大家介紹了關(guān)于利用Python操作消息隊(duì)列RabbitMQ的方法教程,需要的朋友可以參考下。2017-07-07
python+pandas分析nginx日志的實(shí)例
下面小編就為大家分享一篇python+pandas分析nginx日志的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
Python+Django搭建自己的blog網(wǎng)站
一直有種想要搭建自己博客系統(tǒng)打沖動(dòng),可惜需要前端知識(shí)較多,而且還要安裝一系列軟件并配置(windows平臺(tái)),后來(lái)偶然發(fā)現(xiàn)了Django這個(gè)神器,恰巧剛學(xué)過(guò)python,于是就又裝了ubuntu(安裝各種軟件配置都方便),折騰了半天,終于搭建起來(lái)自己的第一個(gè)簡(jiǎn)易博客。2018-03-03
tensorflow實(shí)現(xiàn)加載mnist數(shù)據(jù)集
這篇文章主要為大家詳細(xì)介紹了tensorflow實(shí)現(xiàn)加載mnist數(shù)據(jù)集,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
Python數(shù)據(jù)正態(tài)性檢驗(yàn)實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了Python數(shù)據(jù)正態(tài)性檢驗(yàn)實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
Python2.6版本中實(shí)現(xiàn)字典推導(dǎo) PEP 274(Dict Comprehensions)
這篇文章主要介紹了Python2.6版本中實(shí)現(xiàn)字典推導(dǎo) PEP 274(Dict Comprehensions),本文給出了表達(dá)式寫(xiě)法和for循環(huán)寫(xiě)法兩種方法實(shí)現(xiàn)字符推導(dǎo),需要的朋友可以參考下2015-04-04

