網(wǎng)站首頁 編程語言 正文
雙Y軸圖簡介
?雙Y軸圖顧名思義就是在一個(gè)圖里有兩個(gè)Y軸。這種圖形主要用來展示兩個(gè)因變量和一個(gè)自變量的關(guān)系并且兩個(gè)因變量的數(shù)值單位還不同。如我們想要展示不同月份公司銷業(yè)績以及成本的變化情況這時(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ū)ο螅绻俸唵蔚厥褂胮lt.ylabel()等方法,則只能操作到左軸,而影響不到右軸。
下邊做一個(gè)示例,首先是導(dǎo)包和準(zhǔn)備數(shù)據(jù),這里準(zhǔn)備一組銷量數(shù)據(jù),并計(jì)算其增長率,將其體現(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('銷售量及其增長率圖示', 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("增長率", 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()
圖像效果如下圖:
原文鏈接:https://blog.csdn.net/weixin_48964486/article/details/124134584
相關(guān)推薦
- 2022-11-23 Android開發(fā)Jetpack?Compose元素Modifier特性詳解_Android
- 2022-04-09 一起來了解python的if流程控制_python
- 2022-11-06 Git?Commitizen提交規(guī)范化自動(dòng)生成changelog文件_相關(guān)技巧
- 2021-12-09 Linux內(nèi)存管理和尋址詳細(xì)介紹_Linux
- 2022-06-19 C#?多線程中經(jīng)常訪問同一資源可能造成哪些問題_C#教程
- 2022-12-13 深入了解Rust的生命周期_Rust語言
- 2022-01-03 當(dāng)前時(shí)間與新年倒計(jì)時(shí)
- 2022-11-02 golang服務(wù)報(bào)錯(cuò):?write:?broken?pipe的解決方案_Golang
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支