Ich möchte ein Grundstück schaffen, wo die x-Zecken, wie die folgendenDie Kombination von zwei Variablen benutzerdefinierte x-Zecken zu schaffen, in Python matplotlib
2004 01 03 2004 01 10 2004 01 17 ...
Square is 4.0 Square is 81.0 Square is 256.0 ...
Die Termine in einem numpy Array von Datetime-Objekte gespeichert sind aussehen sollte und Die sekundären Werte (in diesem Fall [0, 1, 4, ...]) werden in einem num- py-Array derselben Größe gespeichert. Mein Code ist unten -
import datetime as dt
import numpy as np
import matplotlib.dates as mdt
import matplotlib.pyplot as plt
fig = plt.figure()
ax = plt.subplot(111)
time = np.zeros(30, dtype=object)
data1 = np.zeros(30)
data2 = np.zeros(30)
for i in range(30):
time[i] = dt.datetime(2004,1,1,0,0,0) \
+ dt.timedelta(days=1)*i
data1[i] = i
data2[i] = 2*i
ax.plot(time, data1)
Mtick = mdt.DayLocator(bymonthday=None, interval=7)
mtick = mdt.DayLocator(bymonthday=range(1,32))
fmt = mdt.DateFormatter('%Y %m %d')
ax.xaxis.set_major_locator(Mtick)
ax.xaxis.set_minor_locator(mtick)
ax.xaxis.set_major_formatter(fmt)
plt.show()
Wie kann ich anpassen/Format die Zecken die sekundären Werte aus dem data2
Variable enthalten?
Bearbeiten: Die Tick-Werte sollten den gleichen Index für beide time
und data2
Variablen haben. Auch in diesem Beispiel ist die time
Variable gleichmäßig verteilt, aber in meinen realen Daten ist dies nicht der Fall.
Dies ist nützlich, aber leider ist meine realen Daten nicht gleichmäßig in zeitlichem Abstand, so mit Scheibe ein wenig ungenau ist, wie ich die nicht a priori wissen Indizes werden zu welcher Zeit zugeordnet. –
Ihr Problem ist nicht gut definiert, da Sie nicht garantieren können, dass die Tick-Position einem vorhandenen Datenpunkt entspricht. Sie können also einen 'square = data2'-Wert hinzufügen ... – Julien
Fairerweise musste ich klarer sein. Es ist garantiert, dass jeder "Zeit" -Wert einen abbildbaren "Daten2" -Wert hat. In meinem eigentlichen Code ist 'data2' eine Funktion von' time'. Wenn also ein Zeit-Tick am 2004/01/03 ist, und wenn ich auf den Wert zugreifen kann, der diesem Tick entspricht, kann ich ihn an eine Funktion übergeben, um den entsprechenden 'data2'-Wert zu erhalten. –