Gráfico de barras com rótulos verticais em python / matplotlib
-
10-07-2019 - |
Pergunta
Eu estou usando matplotlib para gerar um gráfico de barras (vertical). O problema é minhas etiquetas são bastante longa. Existe alguma maneira de exibi-las verticalmente, seja no bar ou acima ou abaixo dela?
Solução
Você algo média como este:
>>> from matplotlib import *
>>> plot(xrange(10))
>>> yticks(xrange(10), rotation='vertical')
?
Em geral, para mostrar qualquer texto no matplotlib com uma orientação vertical, você pode adicionar a palavra-chave rotation='vertical'
.
Para mais opções, você pode olhar para a ajuda (matplotlib.pyplot.text)
As parcelas yticks funcionar as marcas no eixo y; Não estou certo se você originalmente significava isso ou a função ylabel, mas o procedimento é alwasy o mesmo, você tem que adicionar a rotação = 'vertical'
Talvez você também pode encontrar útil as opções 'VerticalAlignment' e 'HorizontalAlignment', que permite que você defina como alinhar o texto com respeito aos carrapatos ou os outros elementos.
Outras dicas
Em Jupyter Notebook que você pode usar algo como isto
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
plt.xticks(rotation='vertical')
plt.plot(np.random.randn(100).cumsum())
ou você pode usar:
plt.xticks(rotation=90)
Eu sugeriria olhar a galeria matplotlib . Pelo menos dois dos exemplos parecem ser relevantes:
- text_rotation.py para a compreensão de como funciona o layout de texto
- barchart_demo2.py , um exemplo de um gráfico de barras com um pouco mais complicado o layout do que o exemplo mais básico.
Por favor confira este link: 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)
Felizmente, isso ajuda.