Domanda

Sto usando matplotlib per generare un diagramma a barre (verticale). Il problema è che le mie etichette sono piuttosto lunghe. C'è un modo per visualizzarli in verticale, nella barra o sopra o sotto di essa?

È stato utile?

Soluzione

Intendi qualcosa del genere:

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

In generale, per mostrare qualsiasi testo in matplotlib con un orientamento verticale, puoi aggiungere la parola chiave rotation = 'vertical' .

Per ulteriori opzioni, puoi consultare la guida (matplotlib.pyplot.text)

La funzione yticks traccia i segni di spunta sull'asse y; Non sono sicuro che tu abbia inizialmente inteso questa o la funzione ylabel, ma la procedura è sempre la stessa, devi aggiungere la rotazione = 'verticale'

Forse puoi anche trovare utili le opzioni 'allineamento verticale' e 'allineamento orizzontale', che ti consente di definire come allineare il testo rispetto ai segni di spunta o agli altri elementi.

Altri suggerimenti

In Jupyter Notebook potresti usare qualcosa del genere

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

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

oppure puoi usare:

plt.xticks(rotation=90)

Suggerirei di guardare la galleria matplotlib . Almeno due degli esempi sembrano essere rilevanti:

  • text_rotation.py per capire come funziona il layout del testo
  • barchart_demo2.py , un esempio di un grafico a barre con un po 'più complicato layout rispetto all'esempio più semplice.

Dai un'occhiata a questo 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)

Il risultato sarà così inserisci qui la descrizione dell'immagine

Speriamo che sia d'aiuto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top