【问题标题】:Plot multiple data on each plot in series of subplots using for loop使用 for 循环在一系列子图中绘制每个图上的多个数据
【发布时间】:2020-08-04 06:01:49
【问题描述】:

我正在尝试使用plt.subplots() 在一大系列子图上绘制多个级别的风速和风向。

我有:

fig, axes=plt.subplots(n=levels,figsize=(20,30),sharex=True)
for i in range(levels):
     axes[i].plot(time,wind_speed[:,i])

如何在每个子图上添加第二个 y 轴,以便在每个级别的同一图上绘制风速和风向?我不明白如何添加第二个轴第二个轴不能以这种方式枚举。

每个图都有相同的 x 轴,但线图上的风速(左 y 轴)和风向为点(右 y 轴)。 twinx 可以工作,但 Python 在 for 循环中使用迭代时不喜欢 twinx

我试过axes[0][i]=axes[i].twinx 我还尝试用for j... 做另一个嵌套for loop 来做axes[j]=axes[i].twinx。这些都不起作用。

【问题讨论】:

  • 请解开我的问题。你所谓的“重复”与我所要求的完全不同。它只在每个图上绘制了东西,我问每个图有 2 个数据集。请解锁。
  • 您的问题是关于如何twinx
  • 是的。我已经通过多种方式尝试过 twinx,但无法弄清楚如何使用我拥有的 for 循环来做到这一点。
  • 请你分享一个小例子并描述预期的输出?
  • "twinx 可以工作,但 Python 在 for 循环中使用迭代时不喜欢 twinx。"是什么让你这么说?能贴出对应的代码吗?

标签: python for-loop matplotlib axis subplot


【解决方案1】:

没有信息并且对您的问题的了解有限,但我想这可能会:

输入参数:sharex = True 允许您保持相同的轴跨越子图。

我的理解是,在一个图中,您需要左右 y 轴:


fig, axes=plt.subplots(n=levels,figsize=(20,30),sharex=True)
for i in range(levels):
     axes[i].plot(time, wind_speed[:, i])
     ax2 = axes[i].twinx()
     ax2.plot(time, wind_direction[:, i])


【讨论】:

  • 谢谢。我认为所有“轴”都必须有一个 [i] 迭代,但我想我想多了
  • 没有问题。不客气。下次尝试发布您的数据的一个小示例时,您会在几秒钟内从其他用户那里得到答案。
猜你喜欢
  • 2020-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2021-05-25
  • 1970-01-01
相关资源
最近更新 更多