Python+Matplotlib怎么绘制双y轴图像
发表于:2025-11-13 作者:千家信息网编辑
千家信息网最后更新 2025年11月13日,今天小编给大家分享一下Python+Matplotlib怎么绘制双y轴图像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后
千家信息网最后更新 2025年11月13日Python+Matplotlib怎么绘制双y轴图像
今天小编给大家分享一下Python+Matplotlib怎么绘制双y轴图像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
双Y轴图简介
双Y轴图顾名思义就是在一个图里有两个Y轴。这种图形主要用来展示两个因变量和一个自变量的关系并且两个因变量的数值单位还不同。如我们想要展示不同月份公司销业绩以及成本的变化情况这时就可以用双Y轴图来展示。(因变量销量和成本具有不同的单位)。
实现思路
绘制双y轴的思想,也是用到了matplotlib面向对象绘图的思想。在不指定位置的情况下,在一个画布上创建出两个坐标系,其中第一个坐标系正常创建,第二个坐标系则使用专有的twinx()方法创建。
则两个坐标系的位置重合。第一个坐标系轴在左,通过twinx()方法创建出的坐标系则轴在右。因为有了两个y轴,所以再对y轴属性进行操作的时候,则需要面向对象,如果再简单地使用plt.ylabel()等方法,则只能操作到左轴,而影响不到右轴。
下边做一个示例,首先是导包和准备数据,这里准备一组销量数据,并计算其增长率,将其体现在右轴。
实现代码
样式一
具体代码如下:
import matplotlib.pyplot as plt# 生成一组数据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# 背景色为cc00ffplt.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)# 增加一条坐标轴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()图像效果如下图:
样式二
具体实现代码如下
%matplotlib inlineimport matplotlib.pyplot as pltimport randomimport pandas as pdimport matplotlib as mplmpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体mpl.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题#数据准备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) #绘制第一个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("时间",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+lin2labs=[l.get_label() for l in lins]ax.legend(lins,labs,loc="upper left",fontsize=15) plt.show()图像效果如下图:
以上就是"Python+Matplotlib怎么绘制双y轴图像"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。
坐标
两个
坐标系
销量
成本
图像
不同
数据
知识
篇文章
代码
因变量
增长率
方法
准备
增长
位置
内容
单位
字体
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
git提交到自己服务器
无锡软件开发前端招聘
网络安全软课题
c 数据库日志文件
linux查看服务器安装的软件
怎样下载联通的服务器
我的世界夏日服务器
服务器集群管理软件价格
网络安全创意绘画教程
服务器 关闭安全组
服务器转换
河北直销软件开发公司
国家禁止赌博软件开发
攀枝花服务器显卡价格
网络安全宣传宣传活动
怎么把文件放入服务器
面对网络安全我们不该怎么做
lol男爵服务器
城镇数据库
网络安全知识考对应的就业岗位
网络技术在
在线教学软件开发需要学什么编程
公安局网络安全投标
iis服务器管理软件
海珠软件开发哪家靠谱
用友 数据库口令
重庆网络软件开发定制均价
网络安全数据分析封面
中兴数据研究所软件开发部
韵达数据库技术