Ich versuche, dieses Diagramm in Matplotlib mit meinen Daten zu replizieren, d. H. Ein Liniendiagramm mit vertikalen Linien, die die Änderungen zeigen, wo positive, negative oder flache Ableitung Änderungen auftreten.Plot Änderungen in Ableitungen von Liniendiagramm in Pandas
Ich habe eine pandas Datenrahmen mit dem diff als Derivat und einem Segmentwechsel jedes Mal erstellt es eine arbitray Bruch in der Ableitung, möchte ich mit der Zeit lat auf der y-Achse zum Plotten auf die x-Achse und eine vline, wenn die Segmentnummer unterbrochen ist.
lat time trip_id diff shifted Segment
-7.11559 2015-12-16 21:53:47 17601 0.00446 0.00003 0
-7.11559 2015-12-16 21:53:45 17601 0.00000 0.00446 1
-7.11563 2015-12-16 21:53:41 17601 -0.00004 0.00000 2
-7.11551 2015-12-16 21:48:29 17601 0.00012 -0.00004 2
-7.11548 2015-12-16 21:48:27 17601 0.00003 0.00012 2
-7.11545 2015-12-16 21:48:26 17601 0.00003 0.00003 2
-7.11539 2015-12-16 21:48:25 17601 0.00006 0.00003 2
-7.11548 2015-12-16 21:43:17 17601 -0.00009 0.00006 2
-7.11545 2015-12-16 21:43:15 17601 0.00003 -0.00009 2
-7.11545 2015-12-16 21:43:13 17601 0.00000 0.00003 3
-7.11542 2015-12-16 21:43:12 17601 0.00003 0.00000 4
kann ich die ersten 2 leicht genug, um mit df.plot(x='time',y='lat')
plotten. Ich kämpfe jedoch mit der Logik darüber, wie man die vline zu einer Zeitachse hinzufügt und welche Parameter an die mplplotlib vline übergeben werden. Jede Hilfe oder Hinweise würden sehr geschätzt werden.
UPDATE 1.
ich diesen Code geschrieben haben, die sollte in meinem Kopf arbeiten, um dieses Problem zu lösen.
plotList=[]
breaker = pd.unique(df.Segment.ravel())
def pullLine(row):
for i in breaker:
if any(row['Segment']) == i:
plotList.append(row['time'])
# breaker is a list of unique segment numbers, this for loop should loop over breaker and then where the first instance of i == the segment number appending the time value to the list
pullLine(df)
print plotList
fig,ax = plt.subplots()
df.plot(x='Segment',y='lat')
# this loops over `plotList` and should plot a `axvline` at each instance.
for i in plotList:
plt.axvline(x = i,linewidth=2, color='r')
plt.show()
jedoch läuft den Code wie oben i KeyError: 0
auf dem plt.axvline
immer bin. Wenn ich manuell ein Datum in die Zeile plt.axvline(x = '2015-12-24 21:51:45')
einstecke, bekomme ich ValueError: invalid literal for float(): 2015-12-24 21:51:45
.
Irgendwelche Ideen, wie man a) löst oder b) eine vline mit einer Zeitreihe auf der x-Achse druckt? Hilfe