Beheben von zu vielen Tick-Marks in Matplotlib

MatplotlibMatplotlibBeginner
Jetzt üben

This tutorial is from open-source community. Access the source code

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Wenn Sie mit Matplotlib arbeiten, ist es üblich, unerwartetes Tick-Verhalten zu finden, wie beispielsweise zu viele Tick-Marks oder Tick-Marks, die nicht in der richtigen Reihenfolge sind. Dies wird oft dadurch verursacht, dass eine Liste von Zeichenketten anstelle von Zahlen oder Datetime-Objekten übergeben wird, die Matplotlib standardmäßig als kategorische Variablen behandelt. In diesem Lab werden Schritt-für-Schritt-Anweisungen zur Behebung von zu vielen Tick-Marks in Matplotlib bereitgestellt.

VM-Tipps

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu öffnen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen von Jupyter Notebook nicht automatisiert werden.

Wenn Sie während des Lernens Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.

Überprüfen des Datentyps

Der erste Schritt besteht darin, den Datentyp der x-Achsenwerte zu überprüfen. Wenn es sich um eine Liste von Zeichenketten handelt, ist es wahrscheinlich, dass das Tick-Verhalten unerwartet ist. Um dies zu beheben, müssen wir die Zeichenketten in numerische Typen umwandeln. Hier ist ein Beispiel:

import matplotlib.pyplot as plt
import numpy as np

## create example data
x = ['1', '5', '2', '3']
y = [1, 4, 2, 3]

## plot the data with string tick labels
fig, ax = plt.subplots()
ax.plot(x, y, 'd')
ax.set_xlabel('Categories')
plt.show()

In diesem Beispiel haben wir eine Liste von Zeichenketten auf der x-Achse. Wenn wir die Daten darstellen, sind die Tick-Labels nicht in der richtigen Reihenfolge und an der falschen Stelle.

Umwandeln von Zeichenketten in numerische Typen

Um das Tick-Verhalten zu beheben, müssen wir die Zeichenketten in numerische Typen umwandeln. Hier ist ein Beispiel:

import matplotlib.pyplot as plt
import numpy as np

## create example data
x = ['1', '5', '2', '3']
y = [1, 4, 2, 3]

## convert strings to floats
x = np.asarray(x, dtype='float')

## plot the data with numeric tick labels
fig, ax = plt.subplots()
ax.plot(x, y, 'd')
ax.set_xlabel('Floats')
plt.show()

In diesem Beispiel wandeln wir die Zeichenkettwerte in Floats um, indem wir np.asarray() verwenden. Wenn wir die Daten erneut darstellen, sind die Tick-Labels wie erwartet.

Umgang mit zu vielen Tick-Marks

Wenn die x-Achse viele Elemente hat, von denen alle Zeichenketten sind, können wir zu viele unlesbare Tick-Marks erhalten. In diesem Fall müssen wir die Zeichenketten in numerische Typen umwandeln. Hier ist ein Beispiel:

import matplotlib.pyplot as plt
import numpy as np

## create example data with 100 elements
x = [f'{xx}' for xx in np.arange(100)]
y = np.arange(100)

## plot the data with string tick labels
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('Categories')
plt.show()

In diesem Beispiel haben wir 100 Zeichenkettwerte auf der x-Achse, was zu vielen unlesbaren Tick-Marks führt.

Um dies zu beheben, müssen wir die Zeichenketten in Floats umwandeln. Hier ist ein Beispiel:

import matplotlib.pyplot as plt
import numpy as np

## create example data with 100 elements
x = [f'{xx}' for xx in np.arange(100)]
y = np.arange(100)

## convert strings to floats
x = np.asarray(x, float)

## plot the data with numeric tick labels
fig, ax = plt.subplots()
ax.plot(x, y)
ax.set_xlabel('Floats')
plt.show()

In diesem Beispiel wandeln wir die Zeichenkettwerte in Floats um, indem wir np.asarray() verwenden. Wenn wir die Daten erneut darstellen, sind die Tick-Labels wie erwartet.

Umgang mit Datum/Uhrzeit-Tick-Marks

Wenn Sie mit Datum/Uhrzeit-Werten auf der x-Achse arbeiten, ist es wichtig, die Zeichenketten in Datetime-Objekte umzuwandeln, um die richtigen Datums-Lokalisierer und -Formatter zu erhalten. Hier ist ein Beispiel:

import matplotlib.pyplot as plt
import numpy as np

## create example data with datetime strings
x = ['2021-10-01', '2021-11-02', '2021-12-03', '2021-09-01']
y = [0, 2, 3, 1]

## convert strings to datetime64
x = np.asarray(x, dtype='datetime64[s]')

## plot the data with datetime tick labels
fig, ax = plt.subplots()
ax.plot(x, y, 'd')
ax.tick_params(axis='x', labelrotation=90)
plt.show()

In diesem Beispiel wandeln wir die Zeichenkettwerte in datetime64 um, indem wir np.asarray() verwenden. Wenn wir die Daten erneut darstellen, sind die Tick-Labels wie erwartet.

Zusammenfassung

Zusammenfassend lässt sich sagen, dass es bei der Arbeit mit Matplotlib wichtig ist, den Datentyp der x-Achsenwerte zu überprüfen. Wenn es sich um Zeichenketten handelt, müssen wir sie in numerische Typen umwandeln, um unerwartetes Tick-Verhalten zu beheben. Wenn es zu viele Tick-Marks gibt, müssen wir ebenfalls die Zeichenketten in numerische Typen umwandeln. Wenn es um Datum/Uhrzeit-Werte geht, müssen wir die Zeichenketten in Datetime-Objekte umwandeln, um die richtigen Datums-Lokalisierer und -Formatter zu erhalten.