2016-01-24 4 views
1

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

mnt = MonthLocator(range(1, 13), bymonthday=1, interval=2) 
mnt_fmt = DateFormatter("%b '%y") 
ax.xaxis.set_major_locator(mnt) 
ax.xaxis.set_major_formatter(mnt_fmt) 
ax.xaxis.set_minor_locator(MaxNLocator(20)) 
ax.yaxis.set_major_locator(MaxNLocator(5)) 
ax.yaxis.set_minor_locator(MaxNLocator(20)) 
# Create nice-looking grid for ease of visualization 
ax.grid(which='minor', alpha=0.2) 
ax.grid(which='major', alpha=0.5) 

EDIT enter image description here

+1

Вы спрашиваете, почему основной шаг по типу отличается от оси x по отношению к оси y? Если это так, это потому, что вы размещаете каждый месяц (30 единиц, из-за того, что mpl обрабатывает даты) по оси x, но каждые 20 единиц по оси y. Однако, если вы спрашиваете, почему 20 единиц по оси Y имеют другой физический размер, чем 20 единиц по оси X, это связано с тем, что соотношение сторон графика не задано. Используйте 'ax.set (aspect = 1)' или 'ax.axis ('equal')', чтобы установить его в 1, если вам нужны идеальные квадраты для сетки. –

+1

благодарит @JoeKington, добавил фотографию того, что я вижу. Малые тики по оси x не являются равномерными крупными клещами. например между майом и июлем 2014 года, расстояние между основным тиком за май 2014 года и незначительным тиком отличается от расстояния между основным тиком за июль 2014 года, а второстепенный тик предшествует ему – user308827

+0

также @JoeKington, не будет устанавливать «ax.axis ('equal') 'to 1, а не сделать сюжет квадратным? Некоторые из моих графиков прямоугольны. – user308827

ответ

1

Что вы видите на оси х фактически разница между маркировкой первого числа каждого месяца и маркировки каждый «х» количество дней.

Вы установили основные тики, которые будут расположены в начале каждого месяца. Тем не менее, вы установили, что минорные тики будут размещаться каждые 5 дней.

Поскольку первый из каждого месяца не равномерно распределен, основные тики не будут равномерно распределены. Однако минорные тики всегда будут на 5 дней друг от друга. Таким образом, вы увидите изменение относительного расстояния между основными и второстепенными тиками по оси x.

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

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