it-swarm.com.de

Matplotlib verkleinert die Tick-Labels

Wie kann ich in einer matplotlib-Figur die Schriftgröße für die Teilstrichbeschriftungen mit ax1.set_xticklabels() verkleinern?

Wie kann man es außerdem von horizontal nach vertikal drehen?

243
Open the way

Bitte beachten Sie, dass neuere Versionen von MPL eine Verknüpfung für diese Aufgabe haben. Ein Beispiel zeigt die andere Antwort auf diese Frage: https://stackoverflow.com/a/11386056/42346

Der folgende Code dient nur zur Veranschaulichung und muss nicht unbedingt optimiert werden.

import matplotlib.pyplot as plt
import numpy as np

def xticklabels_example():
    fig = plt.figure() 

    x = np.arange(20)
    y1 = np.cos(x)
    y2 = (x**2)
    y3 = (x**3)
    yn = (y1,y2,y3)
    COLORS = ('b','g','k')

    for i,y in enumerate(yn):
        ax = fig.add_subplot(len(yn),1,i+1)

        ax.plot(x, y, ls='solid', color=COLORS[i]) 

        if i != len(yn) - 1:
            # all but last 
            ax.set_xticklabels( () )
        else:
            for tick in ax.xaxis.get_major_ticks():
                tick.label.set_fontsize(14) 
                # specify integer or one of preset strings, e.g.
                #tick.label.set_fontsize('x-small') 
                tick.label.set_rotation('vertical')

    fig.suptitle('Matplotlib xticklabels Example')
    plt.show()

if __== '__main__':
    xticklabels_example()

enter image description here

105
bernie

Es gibt tatsächlich einen einfacheren Weg. Ich habe gerade gefunden:

import matplotlib.pyplot as plt
# We prepare the plot  
fig = plt.figure(1)
# We define a fake subplot that is in fact only the plot.  
ax = fig.add_subplot(111)

# We change the fontsize of minor ticks label 
ax.tick_params(axis='both', which='major', labelsize=10)
ax.tick_params(axis='both', which='minor', labelsize=8)

Dies bezieht sich jedoch nur auf die Größe von label Teilen Ihrer Frage.

420
Autiwa

Versuchen Sie Folgendes, um sowohl die Schriftgröße als auch die Drehung gleichzeitig festzulegen:

plt.xticks(fontsize=14, rotation=90)
160
scottlittle

Alternativ können Sie einfach Folgendes tun:

import matplotlib as mpl
label_size = 8
mpl.rcParams['xtick.labelsize'] = label_size 
45
user2468932

In aktuellen Versionen von Matplotlib können Sie axis.set_xticklabels(labels, fontsize='small') ausführen.

23
Christoph
plt.tick_params(axis='both', which='minor', labelsize=12)
20
jingweimo

Eine andere Alternative

Ich habe zwei Diagramme nebeneinander und möchte die Teilstrichbezeichnungen separat anpassen.

Die oben genannten Lösungen waren nah, aber sie arbeiteten nicht für mich aus. Ich fand meine Lösung aus dieser Matplotlib Seite .

ax.xaxis.set_tick_params(labelsize=20)

Dies hat den Trick gemacht und war direkt auf den Punkt. Für meinen Anwendungsfall musste das Diagramm auf der rechten Seite angepasst werden. Für den Plot auf der linken Seite konnte ich, seit ich neue Tick-Labels erstellt habe, die Schriftart in derselben Weise anpassen, in der die Labels festgelegt wurden.

dh

ax1.set_xticklabels(ax1_x, fontsize=15)
ax1.set_yticklabels(ax1_y, fontsize=15)

also habe ich für die richtige Handlung verwendet,

ax2.xaxis.set_tick_params(labelsize=24)
ax2.yaxis.set_tick_params(labelsize=24)

Ein bisschen subtil ... ich weiß ... aber ich hoffe das hilft jemandem :)

Bonuspunkte, wenn jemand weiß, wie man die Schriftgröße des Größenordnungsetiketts anpasst.

enter image description here

17
Kyle Swanson

Sie können auch Beschriftungsparameter wie die Schriftgröße mit einer Zeile wie der folgenden ändern:

zed = [tick.label.set_fontsize(14) for tick in ax.yaxis.get_major_ticks()]
14
ATX_Bigfoot

Für kleinere Schriftarten verwende ich

ax1.set_xticklabels(xticklabels, fontsize=7)

und es funktioniert!

14
Pengyao

Folgendes hat für mich funktioniert:

ax2.xaxis.set_tick_params(labelsize=7)
ax2.yaxis.set_tick_params(labelsize=7)

Der Vorteil des oben genannten ist, dass Sie nicht die array von labels angeben müssen und mit allen Daten auf dem axes arbeiten.

8
Cryptoman