绘制双Y轴图

打印 上一主题 下一主题

主题 851|帖子 851|积分 2553

1.导入数据库
  1. import pandas as pd
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. plt.rcParams['font.sans-serif'] = ['SimHei']
复制代码
2.导入数据
  1. path=r'path'
  2. df = pd.read_csv(path)
  3. x = df['date']
  4. y1 = df['psavert']
  5. y2 = df['unemploy']
复制代码
3.绘制左侧曲线
  1. fig,ax1 = plt.subplots(1,1,figsize = (16,7),dpi = 80)
  2. ax1.plot(x,y1,color = 'tab:red')
复制代码
4.绘制右侧曲线
  1. ax2 = ax1.twinx()
  2. ax2.plot(x,y2,color = 'tab:blue')
复制代码
ax2 = ax1.twinx()函数简介:
在Matplotlib中,ax1.twinx() 方法用于创建一个共享x轴的第二个轴(ax2),这在需要在同一个图表上展示两个不同标准或度量的数据时非常有效。这种方法常用于创建双y轴图表,其中一个轴显示左侧y轴的数据,另一个轴显示右侧y轴的数据。以下是使用 ax1.twinx() 方法创建双y轴图表的基本步骤:

  • 创建主轴:起首,创建一个主轴(ax1),并在其上绘制数据。
  • 创建第二个轴:使用 ax1.twinx() 方法创建第二个轴(ax2),这个轴将共享 ax1 的x轴。
  • 在第二个轴上绘制数据:在 ax2 上绘制第二组数据,通常使用不同的y轴刻度。
  • 设置第二个轴的刻度和标签:为 ax2 设置合适的刻度、标签和标题。
5.设置坐标轴
  1. ax1.set_xlabel('日期',fontsize = 16)
  2. ax1.set_ylabel('储蓄率',color = 'tab:red',fontsize = 16)
  3. ax1.tick_params(axis = 'y',rotation = 0,labelcolor = 'tab:red')
  4. ax2.set_ylabel('失业人数(1000)',color = 'tab:blue',fontsize = 16)
  5. ax2.tick_params(axis = 'y',labelcolor = 'tab:blue')
  6. ax2.set_title('储蓄率vs失业率',fontsize = 16)
  7. ax2.set_xticks(np.arange(0,len(x),60))
  8. ax2.set_xticklabels(x[::60],rotation = 90,fontdict = {'fontsize':10})
  9. plt.show()
复制代码
输出结果展示:

完整代码
  1. ## (1)导入数据库import pandas as pd
  2. import matplotlib.pyplot as plt
  3. import numpy as np
  4. plt.rcParams['font.sans-serif'] = ['SimHei']##(2)导入数据path=r'path'
  5. df = pd.read_csv(path)
  6. x = df['date']
  7. y1 = df['psavert']
  8. y2 = df['unemploy']##(3)绘制左侧曲线fig,ax1 = plt.subplots(1,1,figsize = (16,7),dpi = 80)
  9. ax1.plot(x,y1,color = 'tab:red')## (4)绘制右侧曲线ax2 = ax1.twinx()
  10. ax2.plot(x,y2,color = 'tab:blue')## (5)设置坐标轴ax1.set_xlabel('日期',fontsize = 16)
  11. ax1.set_ylabel('储蓄率',color = 'tab:red',fontsize = 16)
  12. ax1.tick_params(axis = 'y',rotation = 0,labelcolor = 'tab:red')
  13. ax2.set_ylabel('失业人数(1000)',color = 'tab:blue',fontsize = 16)
  14. ax2.tick_params(axis = 'y',labelcolor = 'tab:blue')
  15. ax2.set_title('储蓄率vs失业率',fontsize = 16)
  16. ax2.set_xticks(np.arange(0,len(x),60))
  17. ax2.set_xticklabels(x[::60],rotation = 90,fontdict = {'fontsize':10})
  18. plt.show()
复制代码
说明:该案例泉源于《Python数据分析》

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

冬雨财经

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表