вращение xticks вызывает частичное скрытие тиков в matplotlib - PullRequest
12 голосов
/ 15 июля 2011

Я создаю график с именами на оси X и значениями времени (минуты) на оси Y. Имена на оси X похожи на

 ['cooking']18:15:27 ,['study']18:09:19,['travel']18:21:34` etc ..

, где в качестве значений y 5,1,1 и т. Д. Я дал xlabel как «категории» и ylabel как «продолжительность в минутах».

Так как xticks были строками некоторой длины, я решил повернуть их на 90, чтобы избежать наложения. Теперь, галочки частично скрыты, и xlabel исчез. plot where xticks get partially hidden and xlabel disappears Есть ли способ, которым я могу сделать весь сюжет приспособленным ко всему ..?

спасибо

знак

вот фрагмент кода

import matplotlib.pyplot as plt
...
figure = plt.figure()
barwidth = 0.25
ystep = 10
plt.grid(True)
plt.xlabel('categories')
plt.ylabel('durations in  minutes')
plt.title('durations for categories-created at :'+now)
plt.bar(xdata, ydata, width=barwidth,align='center')
plt.xticks(xdata,catnames,rotation=90)
plt.yticks(range(0,maxduration+ystep,ystep))
plt.xlim([min(xdata) - 0.5, max(xdata) + 0.5])
plt.ylim(0,max(ydata)+ystep)
figure.savefig("myplot.png",format="png")

Ответы [ 3 ]

17 голосов
/ 16 июля 2011

Один хороший вариант - вращать метки тиков.

В вашем конкретном случае может оказаться удобным использовать figure.autofmt_xdate() (который, помимо прочего, будет вращать метки оси X).

В качестве альтернативы, вы можете сделать plt.setp(plt.xticks()[1], rotation=30) (или другие способы сделать то же самое).

Кроме того, как и в случае редактирования спустя несколько лет, с последними версиями matplotlib вы можете вызвать fig.tight_layout(), чтобы изменить размеры, чтобы они соответствовали меткам внутри рисунка, как @elgehelge отмечает ниже.

14 голосов
/ 14 января 2014
plt.tight_layout()

Но обязательно добавьте эту команду после plt.plot() или plt.bar()

4 голосов
/ 28 марта 2013

Установка ограничивающего прямоугольника при сохранении также покажет метки:

figure.savefig('myplot.png', bbox_inches='tight')
...