Гистограмма с вертикальными метками в python / matplotlib

Я использую matplotlib для создания (вертикальной) гистограммы. Проблема в том, что мои ярлыки довольно длинные. Есть ли способ отобразить их вертикально, на панели, над ней или под ней?


person phihag    schedule 03.08.2009    source источник


Ответы (4)


Вы имеете в виду что-то вроде этого:

>>> from matplotlib import *
>>> plot(xrange(10))
>>> yticks(xrange(10), rotation='vertical')

?

В общем, чтобы отображать любой текст в matplotlib с вертикальной ориентацией, вы можете добавить ключевое слово rotation='vertical'.

Дополнительные параметры можно найти в справке (matplotlib.pyplot.text)

Функция yticks отображает отметки на оси y; Я не уверен, что вы изначально имели в виду это или функцию ylabel, но процедура всегда одинакова, вам нужно добавить Rotation = 'vertical'

Возможно, вам также пригодятся опции «вертикальное выравнивание» и «горизонтальное выравнивание», которые позволяют вам определять, как выровнять текст относительно отметок или других элементов.

person dalloliogm    schedule 03.08.2009
comment
Обратите внимание, что я не использую plot (); но бар (). Но поворот = 'вертикальный' кажется ключевым. Тем не менее, это все еще не отображает отметки в столбцах. - person phihag; 03.08.2009
comment
Вы имеете в виду галочки на оси xy? Взгляните на сеточную функцию. Например сетка (ls = '', marker = 'v'). grid () управляет построением сетки по оси xy; с опцией маркера вы определяете стиль для маркеров, а с ls = '' вы получаете невидимую сетку. - person dalloliogm; 03.08.2009
comment
Если не придет лучший ответ, вы получите награду, обещание. Я останусь без доступа в Интернет до 8-9 сентября :( - person phihag; 03.08.2009
comment
Спасибо!! Впрочем, 500 баллов - это многовато для такого ответа, это было не так уж и сложно. Так что, если вы, можете накопить баллы на другой раз :) - person dalloliogm; 04.08.2009
comment
Как я могу сделать это для существующих автоматически созданных меток? - person EL_DON; 09.09.2016

В Jupyter Notebook вы можете использовать что-то вроде этого

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np

plt.xticks(rotation='vertical')
plt.plot(np.random.randn(100).cumsum())

или вы можете использовать:

plt.xticks(rotation=90)
person Vlad Bezden    schedule 22.09.2017
comment
Я думаю, что это тот, который работает с plt.bar (), о чем попросил OP. - person Zhuokai Zhao; 08.06.2021

Перейдите по этой ссылке: https://python-graph-gallery.com/7-custom-barplot-layout/

import matplotlib.pyplot as plt

heights = [10, 20, 15]
bars = ['A_long', 'B_long', 'C_long']
y_pos = range(len(bars))
plt.bar(y_pos, heights)
# Rotation of the bars names
plt.xticks(y_pos, bars, rotation=90)

Результат будет примерно таким:  введите описание изображения здесь

Надеюсь, это поможет.

person Yunzhao Xing    schedule 09.10.2018
comment
Есть ли способ поставить ярлыки под углом, например по диагонали. - person Nguai al; 31.01.2019
comment
Привет, Nguai al, вы можете просто изменить параметр «вращения» в последней строке на любой угол, который вам больше нравится. Например, plt.xticks (y_pos, bars, вращение = 45) даст вам метки под углом 45 градусов по оси x. - person Yunzhao Xing; 11.10.2019

Я бы посоветовал взглянуть на галерею matplotlib. По крайней мере, два примера кажутся актуальными:

  • text_rotation.py для понимания того, как работает макет текста.
  • barchart_demo2.py, пример гистограммы с несколько более сложной структурой, чем самый простой пример.
person Jouni K. Seppänen    schedule 06.08.2009