Перекрывающаяся метка для оси Y и метка для оси X в matplotlib - PullRequest
36 голосов
/ 24 февраля 2012

Если я создаю график с помощью matplotlib, используя следующий код:

import numpy as np
from matplotlib import pyplot as plt
xx = np.arange(0,5, .5)
yy = np.random.random( len(xx) )
plt.plot(xx,yy)
plt.imshow()

Я получаю результат, который выглядит как прикрепленное изображение.Проблема в том, что самый нижний ярлык y-tick перекрывает самый левый ярлык x-tick.Это выглядит непрофессионально.Мне было интересно, существует ли автоматический способ удаления самой нижней метки y-тика, чтобы у меня не возникало проблем с перекрытием.Чем меньше строк кода, тем лучше.enter image description here

Ответы [ 4 ]

36 голосов
/ 24 февраля 2012

В модуле тикера есть класс с именем MaxNLocator , который может принять prune kwarg.
С его помощью вы можете удалить первый тик:

import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
import numpy as np
xx = np.arange(0,5, .5)
yy = np.random.random( len(xx) )
plt.plot(xx,yy)
plt.gca().xaxis.set_major_locator(MaxNLocator(prune='lower'))
plt.show()

Результат:

enter image description here

18 голосов
/ 16 декабря 2013

Вы можете добавить отметки на оси x:

ax.tick_params(axis='x', pad=15)

Заменить ax на plt.gca(), если вы не сохранили переменную ax для текущей цифры.

Вы также можете заполнить обе оси, удалив параметр axis.

6 голосов
/ 21 апреля 2013

Очень элегантным способом решения проблемы перекрытия является увеличение отступов для меток x и y (т. Е. Расстояние до оси).Выход из угла большинства лейблов может быть не всегда желанным.На мой взгляд, в целом это выглядит хорошо, если метки немного дальше от оси, чем указано в конфигурации по умолчанию.

Заполнение может быть изменено с помощью файла matplotlibrc или в вашем сюжетном скрипте с помощью команд

import matplotlib as mpl

mpl.rcParams['xtick.major.pad'] = 8
mpl.rcParams['ytick.major.pad'] = 8

В большинстве случаев достаточно заполнение 6.

2 голосов
/ 24 февраля 2012

Подробно ответили здесь .В основном вы используете что-то вроде этого:

plt.xticks([list of tick locations], [list of tick lables])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...