7

Как задать пределы осей в Matplotlib?

7

Я нуждаюсь в помощи с установкой пределов по оси y в matplotlib. Вот код, который я пытался использовать, но без успеха:

import matplotlib.pyplot as plt

plt.figure(1, figsize = (8.5,11))
plt.suptitle('plot title')
ax = []
aPlot = plt.subplot(321, axisbg = 'w', title = "Year 1")
ax.append(aPlot)
plt.plot(paramValues, plotDataPrice[0], color = '#340B8C', 
         marker = 'o', ms = 5, mfc = '#EB1717')
plt.xticks(paramValues)
plt.ylabel('Average Price')
plt.xlabel('Mark-up')
plt.grid(True)
plt.ylim((25, 250))

С данными, которые у меня есть для этого графика, я получаю пределы по оси y равными 20 и 200. Однако я хочу установить пределы на уровне 20 и 250.

5 ответ(ов)

10

Чтобы получить текущую ось с помощью plt.gca(), а затем задать её пределы, вы можете использовать следующий код:

ax = plt.gca()  # Получаем текущую ось
ax.set_xlim([xmin, xmax])  # Устанавливаем пределы по оси X
ax.set_ylim([ymin, ymax])  # Устанавливаем пределы по оси Y

Это позволит вам задать границы отображаемой области графика для обеих осей. Не забудьте заменить xmin, xmax, ymin и ymax на нужные значения.

2

Вы можете установить диапазон осей самостоятельно, использовав функцию matplotlib.pyplot.axis.

matplotlib.pyplot.axis

from matplotlib import pyplot as plt
plt.axis([0, 10, 0, 20])

Здесь 0, 10 - это диапазон для оси x, а 0, 20 - для оси y.

Также вы можете использовать функции matplotlib.pyplot.xlim и matplotlib.pyplot.ylim.

matplotlib.pyplot.ylim

plt.ylim(-2, 2)
plt.xlim(0, 10)

Таким образом, вы можете настроить пределы каждой из осей независимо друг от друга.

1

Еще одно решение заключается в том, чтобы получить оси графика и переназначить их, изменив только значения по оси y:

x1, x2, y1, y2 = plt.axis()
plt.axis((x1, x2, 25, 250))
0

Вы можете создать объект из matplotlib.pyplot.axes и вызвать метод set_ylim() на этом объекте. Это будет выглядеть примерно так:

import matplotlib.pyplot as plt
axes = plt.axes()
axes.set_ylim([0, 1])
0

Это работало, по крайней мере, в версии matplotlib 2.2.2:

plt.axis([None, None, 0, 100])

Пожалуй, это отличный способ задать, например, только xmin и ymax и т. д.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь