установка ограничения оси Y в Matplotlib - PullRequest
317 голосов
/ 23 сентября 2010

Мне нужна помощь с настройкой пределов оси 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.

Ответы [ 8 ]

476 голосов
/ 21 августа 2014

Попробуй это. Работает и для участков.

axes = plt.gca()
axes.set_xlim([xmin,xmax])
axes.set_ylim([ymin,ymax])
108 голосов
/ 23 сентября 2010

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

x1,x2,y1,y2 = plt.axis()<br> plt.axis((x1,x2,25,250))

37 голосов
/ 07 апреля 2018

Одна вещь, которую вы можете сделать, это установить диапазон осей самостоятельно, используя 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)
9 голосов
/ 19 мая 2015

Чтобы добавить в ответ @ Hima, если вы хотите изменить текущий предел x или y, вы можете использовать следующее.

import numpy as np # you probably alredy do this so no extra overhead
fig, axes = plt.subplot()
axes.plot(data[:,0], data[:,1])
xlim = axes.get_xlim()
# example of how to zoomout by a factor of 0.1
factor = 0.1 
new_xlim = (xlim[0] + xlim[1])/2 + np.array((-0.5, 0.5)) * (xlim[1] - xlim[0]) * (1 + factor) 
axes.set_xlim(new_xlim)

Я считаю это особенно полезным, когда я хочу уменьшить или увеличитьнемного из настроек графика по умолчанию.

6 голосов
/ 23 сентября 2010

Это должно работать. Ваш код работает для меня, как и для Тамаса и Маноя Говиндана. Похоже, вы можете попытаться обновить Matplotlib. Если вы не можете обновить Matplotlib (например, если у вас недостаточно прав администратора), возможно, может помочь другой сервер с matplotlib.use().

3 голосов
/ 14 июня 2018

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

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

Вероятно, это хороший способ настроить, например, только xmin и ymax и т. Д.

2 голосов
/ 01 апреля 2019

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

import matplotlib.pyplot as plt
axes = plt.axes()
axes.set_ylim([0, 1])
0 голосов
/ 13 апреля 2018

Если для осей (генерируемых кодом под кодом, показанным в вопросе) задано разделение диапазона с первыми осями, убедитесь, что вы установили диапазон после последнего графика из этих осей.

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