【问题标题】:Multiple overlapping subplots with different ranges of data具有不同数据范围的多个重叠子图
【发布时间】:2018-06-29 18:57:57
【问题描述】:

我有一些数据想直接在一个图形上绘制。一组具有不同的 y 范围。看来我可以使用plt 绘制具有相同y 范围的两组,或者使用ax2 = ax1.twinx() 绘制具有不同范围的两组,但不能全部绘制三个。有什么鬼鬼祟祟的方法吗?

编辑:

显然它并不像答案看起来那么容易!

def plot_data2(a = 0 , b = 0, c = 0 ):
  fig, ax1 = plt.subplots(figsize = (18,8))
  ax2 = ax1.twinx()
  ax1.plot(a, 'b')
  ax1.plot(b, 'g')
  ax2.plot(c, 'r')

  fig.tight_layout()
  plt.show()

plot_data(a=data1, b=data2)

所以虽然我现在可以很好地一起打印三个图表。我也希望能够选择只打印任意两个。

我本来想问为什么轴没有缩放,但现在当我输入它时,我意识到这是因为我将默认值指定为 0,所以它会拉伸图形。有没有办法只打印两个图表并将它们都缩放以适应?以及相应地更新轴标签。我想我可以在函数内部写几个if,但我希望有更优雅的方式。

哦,还有一件事! x 和 y 的范围不同呢?

【问题讨论】:

  • 可能有用:https://matplotlib.org/gallery/ticks_and_spines/multiple_yaxis_with_spines.html

标签: python plot graph


【解决方案1】:

以下代码:

import matplotlib.pyplot as plt

X = [1,2,3,4,5]

data = [
    [(6-x)  for x in X],        # Decreasing
    [3      for x in X],        # Horizontal
    [(10*x) for x in X]         # Increasing
]

print(data)

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()

ax1.plot(X, data[0])
ax1.plot(X, data[1])
ax2.plot(X, data[2], 'r')       # This is the dataset with a different y range
                                # Specify a color otherwise you'll get duplicated colors
plt.show()

生产:

其中蓝色 = data[0],橙色 = data[1],红色 = data[2](在不同的 y 轴上)。

【讨论】:

  • 我认为@Raksha 正在寻找 3 个不同的 y 轴,而不仅仅是 2 个。
  • 我想我对“一组有不同的 y 范围”的解释不同。
  • 是的,存在混淆。它还提到“使用 ax2 = ax1.twinx() 的具有不同范围的两组,但不是全部三个”。因此,将寻找与 3 个 y 轴相关的答案。让我们离开她!
  • 这也有效! :) 是的,我只有一套不同的 y 范围,但很高兴知道如何处理多个案例。两个很好的答案,谢谢,伙计们!
  • @jedwards,我稍微更新了这个问题。你不会碰巧也能帮助我,对吗? :)
猜你喜欢
  • 2017-06-04
  • 2016-12-24
  • 1970-01-01
  • 2020-04-07
  • 1970-01-01
  • 2015-05-09
  • 2023-04-09
  • 2023-03-29
  • 1970-01-01
相关资源
最近更新 更多