Как я могу автоматически изменять размер текста в python matplotlib? - PullRequest
8 голосов
/ 18 ноября 2011

У меня есть график в matplotlib, и моя проблема в том, что, поскольку у оси x есть строки в качестве значений, когда окно графика изменяется, они перекрываются и не могут быть четко прочитаны.

Похожая вещь происходит с легендой, она не изменяется при изменении размеров окна.

Есть ли настройки для этого?

1 Ответ

11 голосов
/ 18 ноября 2011

Не совсем. (Взгляните на новую matplotlib.pyplot.tight_layout() функцию для чего-то неопределенно похожего, хотя ...)

Однако обычный трюк с длинными метками x-tick состоит в том, чтобы просто вращать их.

Например, если у нас есть что-то с перекрывающимися xticklabels:

import matplotlib.pyplot as plt

plt.plot(range(10))
labels = [15 * repr(i) for i in range(10)]
plt.xticks(range(10), labels)
plt.show()

enter image description here

Мы можем вращать их, чтобы их было легче читать: (Ключ rotation=30. Вызов plt.tight_layout() просто настраивает нижнее поле графика, чтобы надписи не выходили за нижний край. )

import matplotlib.pyplot as plt

plt.plot(range(10))
labels = [10 * repr(i) for i in range(10)]
plt.xticks(range(10), labels, rotation=30)
plt.tight_layout()
plt.show()

enter image description here

По умолчанию метки галочек центрированы на галочке. Для повернутых тиков часто более целесообразно, чтобы левый или правый край метки начинался с тика.

Например, что-то вроде этого (правая сторона, положительное вращение):

import matplotlib.pyplot as plt

plt.plot(range(10))
labels = [10 * repr(i) for i in range(10)]
plt.xticks(range(10), labels, rotation=30, ha='right')
plt.tight_layout()
plt.show()

enter image description here

Или вот это (левая сторона, отрицательное вращение):

import matplotlib.pyplot as plt

plt.plot(range(10))
labels = [10 * repr(i) for i in range(10)]
plt.xticks(range(10), labels, rotation=-30, ha='left')
plt.tight_layout()
plt.show()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...