Python+Matplotlib怎么绘制双y轴图像
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,今天小编给大家分享一下Python+Matplotlib怎么绘制双y轴图像的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后
千家信息网最后更新 2025年01月31日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安全错误
数据库的锁怎样保障安全
数据库功能区是什么
河北节能软件开发报价技术规范
服务器硬防
串口服务器设置串口号
毕马威网络安全保险预测
一个服务器可安装多个数据库吗
宝山区工商软件开发要多少钱
抖音去水印小程序无需服务器域名
我的世界去哪租服务器
网络安全云概念
怎样网络安全大队会抓人
疫情后服务器市场怎么样
vb检索数据库表名
运维 是否包括服务器安全
服务器可以接多个硬盘吗
电信网络技术工程师面试题
为什么万象物语服务器不同
wow服务器ip
软件开发公司的财务报表模板
数据库字段在前端选择
计算机大赛网络安全挑战赛
80级装备数据库
数据库和ms哪个好考
酷狗无法连接服务器
大话服务器查询
哪些国家掌握了5g网络技术
互联网dba数据库
数据库更新字段拼接值
互联网科技怎么做
oscar 数据库