Python+Matplotlib怎么绘制双y轴图像
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,今天小编给大家分享一下Python+Matplotlib怎么绘制双y轴图像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后
千家信息网最后更新 2026年11月04日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安全错误
数据库的锁怎样保障安全
喔噻互联网科技有限公司
上海喔噻互联网科技有限公司
互联网科技产业
互联网科技有限公司图片
科技互联网技术
期待互联网科技
互联网科技logo设计
互联网科技生活的内容
和信科技工业互联网
江阴互联网智能科技产品进口
互联网科技产业特征
辽宁互联网新科技
互联网科技和信息
允成互联网科技有限公司融资
互联网科技创新的路径
世界互联网领先科技成果获奖
互联网金融科技公司的优势
宁波跨境商互联网科技有限公司
银川新华互联网科技学校是国营吗
东风日产互联网科技公司叫什么
华服互联网科技靠谱吗
中国互联网科技股
港股互联网科技股
上海万想互联网科技
科技赋能互联网健康
黑云互联网科技有限公司
互联网科技手机排行榜
陕西九四连强互联网科技有限公司
保山浩联互联网科技有限公司
银川新华互联网科技学校招聘