绘制双Y轴图

cnblogs 2024-07-17 13:09:00 阅读 66

绘制双Y轴图

双Y轴图可以比较不同度量、展示数据相关性、统一时间序列、强调差异性、增强可读性等方面有重要作用,本案例展示了一种简单的双Y轴绘制方法,可以根据具体项目的要求,增加参数设置。

1.导入数据库

<code>import pandas as pd

import matplotlib.pyplot as plt

import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']

2.导入数据

path=r'path'

df = pd.read_csv(path)

x = df['date']

y1 = df['psavert']

y2 = df['unemploy']

3.绘制左侧曲线

fig,ax1 = plt.subplots(1,1,figsize = (16,7),dpi = 80)

ax1.plot(x,y1,color = 'tab:red')

4.绘制右侧曲线

ax2 = ax1.twinx()

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.设置坐标轴

ax1.set_xlabel('日期',fontsize = 16)

ax1.set_ylabel('储蓄率',color = 'tab:red',fontsize = 16)

ax1.tick_params(axis = 'y',rotation = 0,labelcolor = 'tab:red')

ax2.set_ylabel('失业人数(1000)',color = 'tab:blue',fontsize = 16)

ax2.tick_params(axis = 'y',labelcolor = 'tab:blue')

ax2.set_title('储蓄率vs失业率',fontsize = 16)

ax2.set_xticks(np.arange(0,len(x),60))

ax2.set_xticklabels(x[::60],rotation = 90,fontdict = {'fontsize':10})

plt.show()

输出结果展示:

image

完整代码

<code>## (1)导入数据

import pandas as pd

import matplotlib.pyplot as plt

import numpy as np

plt.rcParams['font.sans-serif'] = ['SimHei']

##(2)导入数据

path=r'path'

df = pd.read_csv(path)

x = df['date']

y1 = df['psavert']

y2 = df['unemploy']

##(3)绘制左侧曲线

fig,ax1 = plt.subplots(1,1,figsize = (16,7),dpi = 80)

ax1.plot(x,y1,color = 'tab:red')

## (4)绘制右侧曲线

ax2 = ax1.twinx()

ax2.plot(x,y2,color = 'tab:blue')

## (5)设置坐标轴

ax1.set_xlabel('日期',fontsize = 16)

ax1.set_ylabel('储蓄率',color = 'tab:red',fontsize = 16)

ax1.tick_params(axis = 'y',rotation = 0,labelcolor = 'tab:red')

ax2.set_ylabel('失业人数(1000)',color = 'tab:blue',fontsize = 16)

ax2.tick_params(axis = 'y',labelcolor = 'tab:blue')

ax2.set_title('储蓄率vs失业率',fontsize = 16)

ax2.set_xticks(np.arange(0,len(x),60))

ax2.set_xticklabels(x[::60],rotation = 90,fontdict = {'fontsize':10})

plt.show()

说明:该案例来源于《Python数据分析》



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。