具有不同数据范围的多个重叠子图

时间:2018-06-29 18:57:57

标签: python plot graph

我有一些数据想直接绘制在一个图上。一组的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)

enter image description here

因此,尽管我现在可以一起打印三个图形。我还希望能够选择仅打印任意两个。

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

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

1 个答案:

答案 0 :(得分:0)

以下代码:

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()

产生:

enter image description here

蓝色= data[0],橙色= data[1],红色= data[2](在另一个y轴上)。

相关问题