[FIXED] Matplotlib CSV X-Ticks überlappen

Ausgabe

Ich habe also diesen Datensatz regionaler Temperaturen.

Es enthält tägliche Daten aus vielen Jahren (z. B. 1998-7-12, 2005-4-12). Wenn ich es also mit x als Zeit grafisch darstelle, überlappen sich die x-Etiketten, und wenn ich sie drehe, überlappen sie sich immer noch.

mein code sieht so aus:

import matplotlib.pyplot as plt
import pandas as pd

sheet = pd.read_csv('sheet.csv')

x = sheet['T']
y = sheet['F']
yerror = sheet['E']

plt.title('BHF')
plt.errorbar(x,y,yerr=yerror, fmt='o', elinewidth=1)
plt.grid(linestyle=':')

plt.show()

Es sieht so aus:
https://i.stack.imgur.com/Y1mUZ.png

Ich bin neu in Matplotlibs und Pandas, also könnte mir jemand sagen, wie ich es codieren soll, damit die x-Ticks nur erscheinen, zum Beispiel alle 5 Jahre?

Beispiel, wie es aussehen soll: https://i.stack.imgur.com/Fp4Oi.png

Lösung

Sie müssen zuerst sicherstellen, dass die Daten im datetime-Format vorliegen (überprüfen Sie dies mit dem sheet.info()Befehl – Spalte T sollte datetime anzeigen). Wenn nicht, verwenden pd.to_datetime()Sie , um es auf das Datum zu ändern. Nachdem Sie das Diagramm gezeichnet haben, verwenden Sie set_major_locator(), um die Locators auf 5-Jahres-Ticks set_major_formatter()einzustellen und das Format einzustellen, in dem Sie das Datum und die Uhrzeit anzeigen möchten. Ein einfaches Beispiel ist unten, um dasselbe zu zeigen …

sheet = pd.DataFrame({'T': ['1995-1-21', '1998-7-12', '2002-3-15', '2005-4-12'], 'F': [21, 23,43,12],'E': [5, 1,2,3]}) ##Dummy cata

sheet['T'] = pd.to_datetime(sheet['T'], format='%Y-%m-%d') ##Convert column to datetime

x = sheet['T']
y = sheet['F']
yerror = sheet['E']

plt.title('BHF')
plt.errorbar(x,y,yerr=yerror, fmt='o', elinewidth=1)
plt.grid(linestyle=':')

import matplotlib.dates as mdates
plt.gca().xaxis.set_major_locator(mdates.YearLocator(base=5)) ##Ticks should be 5 years apart
plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%Y-%m-%d')) ##Format of display of date

plt.show()

Geben Sie hier die Bildbeschreibung ein


Beantwortet von –
Redox


Antwort geprüft von –
Katrina (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like