Как изменить направление текста меток тиков в Matplotlib? - PullRequest
0 голосов
/ 27 декабря 2018

Мне нужно использовать библиотеку Matplotlib для визуализации некоторых данных с китайскими метками на XAxis.Вот пример:

A plot with Chinese tick labels

Я хочу изменить направление текста меток галочки, чтобы получить график, подобный этому:

enter image description here

Обратите внимание, что это не «поворот текста».Речь идет о направлении текста.

Как мне добиться этого в Matplotlib?

PS Приведенные выше графики созданы в Excel для демонстрации.Вот код Matplotlib, который может создать сюжет так же, как и первый.Ну, я не могу создать второй в Matplotlib, вот почему я здесь ...

import matplotlib.pyplot as plt
import matplotlib.font_manager as mfont
myfont = mfont.FontProperties('SimHei')

data = [1,2,3,4,5]
labels = ['中文1', '中文2', '中文3', '中文4', '中文5']

fig = plt.figure()
ax = fig.add_subplot(111)
ax.bar(data, data, tick_label=labels)

for label in ax.xaxis.get_majorticklabels():
    label.set(fontproperties=myfont)
plt.show()

Я вставил новые строки в тексты меток, и у меня получился сюжет, подобный этому: enter image description here

Что-то скрыло текст.

Код для приведенного выше сюжета:

import matplotlib.pyplot as plt
import matplotlib.font_manager as mfont
# myfont = mfont.FontProperties('SimHei', size=30)

data = [1,2,3,4,5]
labels = ['中\n文\n1', '中\n文\n2 ', '中\n文\n3', '中\n文\n4', '中\n文\n5']

fig = plt.figure()
fig.set_facecolor('white')
ax = fig.add_subplot(111)
ax.bar(data, data, tick_label=labels)

for label in ax.xaxis.get_majorticklabels():
    label.set(family='SimHei', size=15, backgroundcolor='red', linespacing=3)
plt.show()

Ответы [ 3 ]

0 голосов
/ 27 декабря 2018

Я не думаю, что есть возможность печатать текст по вертикали в matplotlib.Однако вы можете сделать простой взлом, вставив символ новой строки в текст, который вы хотите напечатать.

import matplotlib.pyplot as plt
import matplotlib.font_manager as mfont
myfont = mfont.FontProperties('SimHei')

data = [1,2,3,4,5]
labels = ['中\n文\n1', '中\n文\n2', '中\n文\n3', '中\n文\n4', '中\n文\n5']

fig = plt.figure()
ax = fig.add_subplot(111)
ax.bar(data, data, tick_label=labels)

for label in ax.xaxis.get_majorticklabels():
    label.set(fontproperties=myfont)
plt.show()
0 голосов
/ 07 апреля 2019

посещение:

https://matplotlib.org/gallery/ticks_and_spines/ticklabels_rotation.html

пример:

import matplotlib.pyplot as plt

x = [1, 2, 3, 4]
y = [1, 4, 9, 6]
labels = ['Frogs', 'Hogs', 'Bogs', 'Slogs']

plt.plot(x, y, 'ro')

Вы можете указать поворот меток в градусах или с помощью ключевых слов.

plt.xticks(x, labels, rotation='vertical')

Поля пэдов, чтобы маркеры не обрезались по осям

plt.margins(0.2)

Интервал настройки для предотвращения обрезки меток

plt.subplots_adjust(bottom=0.15)
plt.show()
0 голосов
/ 27 декабря 2018

Обходной путь для получения каждого слова в новой строке при печати галочек.

labels = ['\n'.join(list(tick)) for tick in labels ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...