Несколько перекрывающихся участков с разными диапазонами данных - PullRequest
0 голосов
/ 29 июня 2018

У меня есть некоторые данные, которые я хотел бы нарисовать на одной фигуре прямо друг над другом. Один набор имеет другой диапазон y. Кажется, я могу построить два набора с одинаковым диапазоном y, используя plt, или два набора с разными диапазонами, используя ax2 = ax1.twinx(), но не все три. Есть какой-то хитрый способ сделать это?

Edit:

Очевидно, это не так просто, как казалось из ответа!

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 голосов
/ 29 июня 2018

следующий код:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...