607 Stimmen

Drehen Achse Text in Python matplotlib

Ich kann nicht herausfinden, wie ich den Text auf der X-Achse drehen kann. Es ist ein Zeitstempel, so wie die Anzahl der Proben zu erhöhen, erhalten sie näher und näher, bis sie überlappen. Ich möchte den Text um 90 Grad drehen, so wie die Proben näher zusammen bekommen, sie sind nicht überlappen.

Unten ist, was ich habe, es funktioniert gut mit der Ausnahme, dass ich nicht herausfinden kann, wie die X-Achse Text zu drehen.

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')

56voto

kiril Punkte 4186

Wenn Sie eine Drehung auf das Achsenobjekt anwenden wollen, ist es am einfachsten, wenn Sie tick_params . Zum Beispiel.

ax.tick_params(axis='x', labelrotation=90)

Referenz der Matplotlib-Dokumentation aquí .

Dies ist nützlich, wenn Sie ein Array von Achsen haben, wie es von plt.subplots und es ist bequemer als die Verwendung von set_xticks denn in diesem Fall müssen Sie auch die Tick-Labels setzen, und es ist auch bequemer als diejenigen, die über die Ticks iterieren (aus offensichtlichen Gründen)

54voto

cjohnson318 Punkte 3074

Ich habe mir ein ähnliches Beispiel ausgedacht. Auch hier ist das Schlüsselwort Rotation nun, es ist der Schlüssel.

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 ) ;

41voto

Bei Verwendung von plt :

plt.xticks(rotation=90)

Im Falle der Verwendung von Pandas oder Seaborn zum Plotten, unter der Annahme ax als Achsen für die Darstellung:

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

Eine andere Möglichkeit, das oben Genannte zu tun:

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

38voto

Tommy Punkte 11107

Meine Antwort lehnt sich an die Antwort von cjohnson318 an, aber ich wollte keine hartkodierte Liste von Bezeichnungen liefern, sondern die vorhandenen Bezeichnungen drehen:

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

16voto

Roberto Marzocchi Punkte 317

Die einfachste Lösung ist die Verwendung:

plt.xticks(rotation=XX)

sondern auch

# Tweak spacing to prevent clipping of tick-labels
plt.subplots_adjust(bottom=X.XX)

Für die Daten habe ich z.B. Rotation=45 und Bottom=0.20 verwendet, aber Sie können auch einen Test für Ihre Daten durchführen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X