Matplotlib/pyplot: как установить диапазон осей?

Я хотел бы нарисовать стандартную двухмерную линейную диаграмму с графиком, но заставить значения осей быть между 0 и 600 на x, и 10k и 20k на y. Позвольте мне привести пример...

import pylab as p

p.title(save_file)
p.axis([0.0,600.0,1000000.0,2000000.0])

#define keys and items elsewhere..
p.plot(keys,items)
p.savefig(save_file, dpi=100)

Тем не менее, оси все еще приспосабливаются к размеру данных. Я интерпретирую эффект p.axis, чтобы он устанавливал максимальные и минимальные значения, а не заставлял их быть максимальными или минимальными. То же самое происходит, когда я пытаюсь использовать p.xlim() и т. Д.

Какие-нибудь мысли?

Благодарю.

4 ответа

Призвание p.plot после установки лимитов это то, почему это масштабирование. Вы правы в том, что отключение автоматического масштабирования даст правильный ответ, но вызов будет xlim() или же ylim() после вашего plot команда.

Я использую это довольно часто, чтобы инвертировать ось X, я работаю в астрономии, и мы используем систему величин, которая является обратной (то есть более яркие звезды имеют меньшую величину), поэтому я обычно меняю границы с

lims = xlim()
xlim([lims[1], lims[0]]) 

Чтобы ответить на мой собственный вопрос, нужно отключить автоматическое масштабирование...

p.axis([0.0,600.0, 10000.0,20000.0])
ax = p.gca()
ax.set_autoscale_on(False)

Я попробовал все вышеперечисленные ответы, а затем подвел итог, как нарисовать изображение с фиксированными осями. Это относится как к show функция и savefig функция.

  1. прежде чем строить сюжет:

    fig = pylab.figure()
    ax = fig.gca()
    ax.set_autoscale_on(False)
    

Это запросить ax который subplot(1,1,1),

  1. Во время сюжета:

    ax.plot('You plot argument') # Put inside your argument, like ax.plot(x,y,label='test')
    ax.axis('The list of range') # Put in side your range [xmin,xmax,ymin,ymax], like ax.axis([-5,5,-5,200])
    
  2. После сюжета:

    1. Чтобы показать изображение:

      fig.show()
      
    2. Чтобы сохранить рисунок:

      fig.savefig('the name of your figure')
      

Я выяснил, что поставить axis в начале кода не будет работать, даже если я установил autoscale_on в False,

Я использовал этот код для создания серии анимации. А ниже приведен пример объединения изображений с несколькими фиксированными осями в анимацию.IMG

Попробуй позвонить axis после всех команд заговора.

Другие вопросы по тегам