Python+Matplotlib繪制雙y軸圖像的示例代碼
雙Y軸圖簡(jiǎn)介
雙Y軸圖顧名思義就是在一個(gè)圖里有兩個(gè)Y軸。這種圖形主要用來展示兩個(gè)因變量和一個(gè)自變量的關(guān)系并且兩個(gè)因變量的數(shù)值單位還不同。如我們想要展示不同月份公司銷業(yè)績(jī)以及成本的變化情況這時(shí)就可以用雙Y軸圖來展示。(因變量銷量和成本具有不同的單位)。
實(shí)現(xiàn)思路
繪制雙y軸的思想,也是用到了matplotlib面向?qū)ο罄L圖的思想。在不指定位置的情況下,在一個(gè)畫布上創(chuàng)建出兩個(gè)坐標(biāo)系,其中第一個(gè)坐標(biāo)系正常創(chuàng)建,第二個(gè)坐標(biāo)系則使用專有的twinx()方法創(chuàng)建。
則兩個(gè)坐標(biāo)系的位置重合。第一個(gè)坐標(biāo)系軸在左,通過twinx()方法創(chuàng)建出的坐標(biāo)系則軸在右。因?yàn)橛辛藘蓚€(gè)y軸,所以再對(duì)y軸屬性進(jìn)行操作的時(shí)候,則需要面向?qū)ο?,如果再?jiǎn)單地使用plt.ylabel()等方法,則只能操作到左軸,而影響不到右軸。
下邊做一個(gè)示例,首先是導(dǎo)包和準(zhǔn)備數(shù)據(jù),這里準(zhǔn)備一組銷量數(shù)據(jù),并計(jì)算其增長(zhǎng)率,將其體現(xiàn)在右軸。
實(shí)現(xiàn)代碼
樣式一
具體代碼如下:
import matplotlib.pyplot as plt # 生成一組數(shù)據(jù) x = range(7) y1 = [2000, 1600, 3000, 6200, 7000, 9800, 11000] y2 = [1] for i in range(len(y1)): if i+1 == len(y1): break rate = round(y1[i+1]/y1[i] - 1, 2) y2.append(rate) fig = plt.figure(figsize=(10, 8), facecolor='#ff33ff') # 字體使用楷體 plt.rcParams['font.sans-serif'] = ['STKAITI'] plt.rcParams['axes.unicode_minus'] = False # 背景色為cc00ff plt.rcParams['axes.facecolor'] = '#cc00ff' ax1 = fig.add_subplot(111) plt.title('銷售量及其增長(zhǎng)率圖示', color='#ffff00', fontsize=25, y=1.04) plt.xticks(x, ['1月', '2月', '3月', '4月', '5月', '6月', '7月'], color='#ffff00', fontsize=15) plt.xlabel('月份', color='#ff0033', fontsize=15) plt.yticks(color='#B22222', fontsize=15) ax1.bar(x, y1, color='#33ff66', label='left') ax1.set_ylabel('銷售量(件)', color='#66ff00', fontsize=20) # 增加一條坐標(biāo)軸 ax2 = ax1.twinx() ax2.plot(x, y2, color='#3399ff', linestyle='--', marker='o', linewidth=2) ax2.set_ylabel("增長(zhǎng)率", color='#66ff00', fontsize=20) ax2.tick_params(axis='y', color='green', labelsize=15, labelcolor='#B22222') for a, b in zip(x, y2): plt.text(a, b+0.02, '%.2f' % b, ha='center', va='bottom', fontsize=15, color='red') plt.show()
圖像效果如下圖:
樣式二
具體實(shí)現(xiàn)代碼如下
%matplotlib inline import matplotlib.pyplot as plt import random import pandas as pd import matplotlib as mpl mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默認(rèn)字體 mpl.rcParams['axes.unicode_minus'] = False # 解決保存圖像是負(fù)號(hào)'-'顯示為方塊的問題 #數(shù)據(jù)準(zhǔn)備 date=["一月","二月","三月","四月","五月","六月","七月","八月"] sales=[random.randint(10000,25000) for i in range(8)] cost=[int(i/100)-random.randint(1,20) for i in sales] df=pd.DataFrame(data={"銷量":sales,"成本":cost},index=date) #繪制第一個(gè)Y軸 fig=plt.figure(figsize=(20,8),dpi=80) ax=fig.add_subplot(111) lin1=ax.plot(df.index,df["銷量"],marker="o",label="sales") ax.set_title("雙Y軸圖",size=20) ax.set_xlabel("時(shí)間",size=18) ax.set_ylabel("銷量(件)",size=18) for i,j in df["銷量"].items(): ax.text(i,j+20,str(j),va="bottom",ha="center",size=15) #繪制另一Y軸 ax1=ax.twinx() lin2=ax1.plot(df.index,df["成本"],marker="o",color="red",label="cost") ax1.set_ylabel("成本(元)",size=18) #合并圖例 lins=lin1+lin2 labs=[l.get_label() for l in lins] ax.legend(lins,labs,loc="upper left",fontsize=15) plt.show()
圖像效果如下圖:
到此這篇關(guān)于Python+Matplotlib繪制雙y軸圖像的示例代碼的文章就介紹到這了,更多相關(guān)Python Matplotlib雙y軸圖像內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用urlretrieve實(shí)現(xiàn)直接遠(yuǎn)程下載圖片的示例代碼
這篇文章主要介紹了Python使用urlretrieve實(shí)現(xiàn)直接遠(yuǎn)程下載圖片的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08詳解Python操作RabbitMQ服務(wù)器消息隊(duì)列的遠(yuǎn)程結(jié)果返回
RabbitMQ是一款基于MQ的服務(wù)器,Python可以通過Pika庫來進(jìn)行程序操控,這里我們將來詳解Python操作RabbitMQ服務(wù)器消息隊(duì)列的遠(yuǎn)程結(jié)果返回:2016-06-06Keras:Unet網(wǎng)絡(luò)實(shí)現(xiàn)多類語義分割方式
本文主要利用U-Net網(wǎng)絡(luò)結(jié)構(gòu)實(shí)現(xiàn)了多類的語義分割,并展示了部分測(cè)試效果,希望對(duì)你有用!2020-06-06pytorch學(xué)習(xí)教程之自定義數(shù)據(jù)集
這篇文章主要給大家介紹了關(guān)于pytorch學(xué)習(xí)教程之自定義數(shù)據(jù)集的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11python 判斷矩陣中每行非零個(gè)數(shù)的方法
今天小編就為大家分享一篇python 判斷矩陣中每行非零個(gè)數(shù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01vscode 遠(yuǎn)程調(diào)試python的方法
本篇文章主要介紹了vscode 遠(yuǎn)程調(diào)試python的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-12-12Python實(shí)現(xiàn)簡(jiǎn)易信息分類存儲(chǔ)軟件
這篇文章主要介紹的是通過Python制作一個(gè)簡(jiǎn)易的文件分類存儲(chǔ)文件,可以實(shí)現(xiàn)信息的增刪改查以及內(nèi)容的導(dǎo)出和回復(fù),文中的示例代碼對(duì)我們的學(xué)習(xí)有一定的價(jià)值,感興趣的同學(xué)可以了解一下2021-12-12Tensorflow 2.4 搭建單層和多層 Bi-LSTM 模型
這篇文章主要為大家介紹了Tensorflow 2.4 搭建單層 Bi-LSTM 模型和多層 Bi-LSTM 模型的實(shí)現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01關(guān)于Python turtle庫使用時(shí)坐標(biāo)的確定方法
這篇文章主要介紹了關(guān)于Python turtle庫使用時(shí)坐標(biāo)的確定方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-03-03python基于OpenCV模板匹配識(shí)別圖片中的數(shù)字
這篇文章主要介紹了python基于OpenCV模板匹配識(shí)別圖片中的數(shù)字,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03