2013-04-14 3 views
1

при построении графика matplotlib автоматически устанавливает масштабы из строящегося содержимого данных. Но, кажется, пределы для обеих осей всегда равны максимумам из данных, которые должны быть построены. Это заставляет маркеры данных достигать максимумов. Я хотел бы изменить это поведение так, чтобы он оставил некоторое пространство на четырех сторонах графика независимо от размера маркера. По крайней мере, есть способ просто установить статический, определенный пользователем марж?matplotlib изменить правила автомасштабирования

пример:

import matplotlib.pyplot as plt 
import matplotlib as mpl 
import numpy as np 
fig = plt.figure() 
ax = fig.add_subplot(111) 
ax.plot(np.arange(10) ** 2, 's', ms = 20) 

этот пример ясно показывает 3 точек данных были обрезаны.

+0

возможного дубликат [Как AutoScale у оси в Matplotlib?] (http://stackoverflow.com/questions/15375791/how-to-autoscale-y-axis-in-matplotlib) – tacaswell

ответ

3

(копируется практически сразу с How to autoscale y axis in matplotlib?)

Вы хотите marginsdoc

экс

ax.margins(y=.1, x=.1) 

Также см Add margin when plots run against the edge of the graph

+0

ОК, на самом деле я немного искал, прежде чем начинать этот пост, но, похоже, я искал неправильные ключевые слова. Это решение хорошо, но кажется, что он не может устанавливать левое и правое или верхнее и нижнее поля независимо. – user1850133

+0

@ user1850133 Я уверен, что это так (вы не можете установить верхнюю, нижнюю, левую, правую по отдельности). Если вам это действительно понравится, возможно, отправьте запрос функции в github или просто сделайте свои ограничения по оси вручную. – tacaswell

+0

Я просто попытался пойти на github, это кажется немного сложным, я займу некоторое время, чтобы отправить мой запрос. – user1850133

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