2016-09-29 3 views
1

Я хочу использовать ax.axis('equal'), чтобы наложить один шаг на X & Y, но я также хочу указать конкретные диапазоны для осей X и Y. Если поля также фиксированы, проблема ограничена, и результат показан в левой части рисунка 1. Если вместо этого полям разрешалось автоматически увеличивать себя, чтобы занять слабину, тогда xlim и ylim могли остаться, когда я их установил, все еще удовлетворяя axis('equal'). Пример того, что мне нужно, показан в правой части рисунка 1. Как я могу позволить полям графика «плавать»?Как использовать xlim и ylim при использовании ax.axis ('equal')?

f,ax=plt.subplots(1) #open a figure 
ax.axis('equal') #make the axes have equal spacing 
ax.plot([0,20],[0,20]) #test data set 

#change the plot axis limits 
ax.set_xlim([2,18]) 
ax.set_ylim([5,15]) 

#read the plot axis limits 
xlim2=array(ax.get_xlim()) 
ylim2=array(ax.get_ylim()) 

#define indices for drawing a rectangle with xlim2, ylim2 
sqx=array([0,1,1,0,0]) 
sqy=array([0,0,1,1,0]) 

#plot a thick rectangle marking the xlim2, ylim2 
ax.plot(xlim2[sqx],ylim2[sqy],lw=3) #this does not go all the way around the edge 

actual and desired output Рисунок 1: Выход из приведенного выше фрагмента кода.

+0

Вы должны поместить 'set_xlim',' set_ylim' до конца, чтобы избежать автоматического перемасштабирование. – dnalow

+0

@dnalow Это не работает, если я удалю все после 'ax.set_ylim()', и это не сработает, если я скопирую 'set_xlim()', 'set_ylim()' до конца после того, как все будет сделано. –

+0

это из-за 'ax.axis ('equal'). Он фиксирует степпинг, поэтому subplotsize должен соответствовать вашим лимитам, что означает, в свою очередь, что размер вашей фигуры должен соответствовать или параметры подзадачи. – dnalow

ответ

2
ax.set_aspect('equal',adjustable='box') 

enter image description here

+0

Я знал, что это должно быть так просто. –

+0

Кстати, это может заменить 'ax.axis ('equal')' в исходном вопросе. –

+0

'adjust = 'box-forced'' может быть предпочтительнее, особенно при совместном использовании осей. См. Http://matplotlib.org/api/axes_api.html –

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