2010-09-23 3 views
211

Мне нужна помощь при настройке границ оси y на matplotlib. Вот код, который я пробовал, безуспешно.установка предела оси 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)) 

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

+1

Работает для меня с Matplotlib 1.0.0, если я добавлю 'plt.show()' в конце, чтобы показать график. Какую версию и какой бэкэнд вы используете? –

+9

Работа для меня с Matplotlib 0.98.5.2, Python 2.6.2. Я попробовал как «plt.ylim ((25,250))», так и «plt.ylim (ymax = 250, ymin = 25)». Я использую «Agg». –

+1

Спасибо вам обоим. Он работает с PDF-файлом для вас. – Curious2learn

ответ

6

Это должно работать. Ваш код работает для меня, как для Tamás и Manoj Govindan. Похоже, вы могли бы попытаться обновить Matplotlib. Если вы не можете обновить Matplotlib (например, если у вас недостаточно административных прав), возможно, использование другого бэкэнда с matplotlib.use() может помочь.

+0

Спасибо за проверку! Я использую pdf-файл ('matplotlib.use ('PDF')'). Я использую версию, которая поставляется с последней версией Enthought Python Distribution. Не могли бы вы посмотреть, работает ли он с файлом PDF. Благодаря! – Curious2learn

+0

Он работает с файлами PDF в Mac OS X. Вы уверены, что выходной файл действительно обновлен с помощью 'plt.savefig()'? – EOL

+0

Я понял, проблема, я думаю. Если я выберу 'aPlot =' в строке 'plt.subplot', это тоже будет для меня. Кажется, что, если назначить подзадачу такой переменной, необходимо использовать какой-либо другой метод установки пределов осей. Это правда? – Curious2learn

89

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

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

316

Попробуйте это. Работает и для подзаговоров.

axes = plt.gca() 
axes.set_xlim([xmin,xmax]) 
axes.set_ylim([ymin,ymax]) 
+34

Кстати, это глупая аббревиатура означает «** g ** et ** c ** current ** a ** xes». –

+1

Lenar, отличная. Я слышал этот термин случайно, слышал также, что он возник из MATLAB. полезный комментарий. – Arjee

4

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

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) 

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

Смежные вопросы