首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:在pyplot图形上绘制第二个y轴。

Python:在pyplot图形上绘制第二个y轴。
EN

Stack Overflow用户
提问于 2019-07-23 20:13:54
回答 1查看 306关注 0票数 0

我正在尝试创建一个由两个数字组成的子图。每一幅图都显示了与时间轴相对应的一些数据。对于每个图形,我希望有两个y轴,对应于在同一图形中显示的两个不同的图。

让我们从对应于y轴之一的数据开始。这些数据对于这两个数字中的每一个都是相同的,生成如下(这是相当丑陋的代码,如果您对如何改进它有任何建议,请告诉我!):

代码语言:javascript
复制
pwm_len = len(Time)/6
pwm_max = 255
pwm_min = 150
pwm_mid = 200
pwm_zero = 0
pwm1 = np.repeat(pwm_max, pwm_len) 
pwm2 = np.repeat(pwm_min, pwm_len)
pwm3 = np.repeat(pwm_max, pwm_len)
pwm4 = np.repeat(pwm_mid, pwm_len)
pwm5 = np.repeat(pwm_max, pwm_len)
pwm6 = np.repeat(pwm_zero, pwm_len)
pwm = pwm1 + pwm2 + pwm3 + pwm4 + pwm5 + pwm6

为了创建这个图,我使用了以下代码(请注意,由于twinx()的一些错误用法,它现在无法工作):

代码语言:javascript
复制
fig, axs = plt.subplots(2, sharex=True, sharey=True)
plt.subplots_adjust(hspace=0.5)
axs_pwm = axs.twinx()
axs[0].plot(Time, velocity, 'b-')
axs_pwm[0].plot(Time, pwm, 'r-')
axs[0].set_ylabel('[mm/s]')
axs_pwm[0].set_ylabel('PWM')
axs[0].grid(True)
axs[1].plot(Time, velocity_filtered, 'b-')
axs_pwm[1].plot(Time, pwm, 'r-')
axs[1].set_ylabel('[mm/s]')
axs_pwm[1]-set_ylabel('PWM')
axs[1].grid(True)

plt.show()

显然,我使用twinx()函数的方式是错误的。但绘制第二个y轴的另一种方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-23 21:20:06

根据ImportanceOfBeingErnest's的建议,您需要以下内容:

  • 在使用twinx()时,使用索引0和1为每个子图创建双轴
  • 使用各自的双轴对象绘制数据并设置y轴标签。
代码语言:javascript
复制
fig, axs = plt.subplots(2, sharex=True, sharey=True)
plt.subplots_adjust(hspace=0.5)

axs_pwm1 = axs[0].twinx() # Create twin axis for the first subplot
axs[0].plot(Time, velocity, 'b-')
axs_pwm1.plot(Time, pwm, 'r-')
axs[0].set_ylabel('[mm/s]')
axs_pwm1.set_ylabel('PWM')
axs[0].grid(True)

axs_pwm2 = axs[1].twinx() # Create twin axis for the second subplot
axs[1].plot(Time, velocity_filtered, 'b-')
axs_pwm2.plot(Time, pwm, 'r-')
axs[1].set_ylabel('[mm/s]')
axs_pwm2.set_ylabel('PWM')
axs[1].grid(True)

plt.show()

或者按照@SpghttCd在注释中的建议,您可以预定义所有的双轴,然后使用索引作为

代码语言:javascript
复制
ax2 = [ax.twinx() for ax in axs]

ax2[0].plot(...)
ax2[1].plot(...)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57171550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档