torta graficos grafico graficas ejes diagrama crear cajas python matplotlib

graficos - Gire el texto del eje en matplotlib python



python grafico circular (9)

Aparte de

plt.xticks(rotation=90)

esto también es posible:

plt.xticks(rotation=''vertical'')

No puedo entender cómo rotar el texto en el eje X. Es una marca de tiempo, por lo que a medida que aumenta el número de muestras, se acercan más y más hasta que se superponen. Me gustaría rotar el texto 90 grados para que las muestras se acerquen, no se superponen.

Debajo está lo que tengo, funciona bien con la excepción de que no puedo entender cómo rotar el texto del eje X.

import sys import matplotlib matplotlib.use(''Agg'') import matplotlib.pyplot as plt import datetime font = {''family'' : ''normal'', ''weight'' : ''bold'', ''size'' : 8} matplotlib.rc(''font'', **font) values = open(''stats.csv'', ''r'').readlines() time = [datetime.datetime.fromtimestamp(float(i.split('','')[0].strip())) for i in values[1:]] delay = [float(i.split('','')[1].strip()) for i in values[1:]] plt.plot(time, delay) plt.grid(b=''on'') plt.savefig(''test.png'')


Dependerá de lo que estás tramando.

import matplotlib.pyplot as plt x=[''long_text_for_a_label_a'', ''long_text_for_a_label_b'', ''long_text_for_a_label_c''] y=[1,2,3] myplot = plt.plot(x,y) for item in myplot.axes.get_xticklabels(): item.set_rotation(90)

Para pandas y seres marinos que te dan un objeto Axes:

df = pd.DataFrame(x,y) #pandas myplot = df.plot.bar() #seaborn myplotsns =sns.barplot(y=''0'', x=df.index, data=df) # you can get xticklabels without .axes cause the object are already a # isntance of it for item in myplot.get_xticklabels(): item.set_rotation(90)

Si necesita rotar las etiquetas, es posible que necesite cambiar también el tamaño de la fuente, puede usar font_scale=1.0 para hacerlo.


Esto funciona para mí:

plt.xticks(rotation=90)


Mi respuesta está inspirada en la respuesta de cjohnson318, pero no quería proporcionar una lista de etiquetas codificadas; Quise rotar las etiquetas existentes:

for tick in ax.get_xticklabels(): tick.set_rotation(45)


Pruebe pyplot.setp. Creo que podrías hacer algo como esto:

x = range(len(time)) plt.xticks(x, time) locs, labels = plt.xticks() plt.setp(labels, rotation=90) plt.plot(x, delay)


Se me ocurrió un ejemplo similar. De nuevo, la palabra clave de rotación es ... bueno, es la clave.

from pylab import * fig = figure() ax = fig.add_subplot(111) ax.bar( [0,1,2], [1,3,5] ) ax.set_xticks( [ 0.5, 1.5, 2.5 ] ) ax.set_xticklabels( [''tom'',''dick'',''harry''], rotation=45 ) ;


Si usa plt :

plt.xticks(rotation=90)

En caso de usar pandas o seaborn para trazar, suponiendo ax como ejes para la trama:

ax.set_xticklabels(ax.get_xticklabels(), rotation=90)

Otra forma de hacer lo anterior:

for tick in ax.get_xticklabels(): tick.set_rotation(45)


Camino fácil

Tal como se describe aquí , existe un método existente en la clase de figure matplotlib.pyplot que gira las fechas de forma automática para su figura.

Puede llamarlo después de trazar sus datos (es decir, ax.plot(dates,ydata) :

fig.autofmt_xdate()

Si necesita formatear las etiquetas aún más, revise el enlace de arriba.

Objetos que no son de fecha y hora

Según el comentario de languitar , el método que sugerí para los xticks que no xticks fecha y hora no se actualizaría correctamente al hacer zoom, etc. Si no se trata de un objeto datetime utilizado como su eje x, debe seguir la respuesta de Tommy :

for tick in ax.get_xticklabels(): tick.set_rotation(45)


import pylab as pl pl.xticks(rotation = 90)