2012-06-19 13 views
7

Ich verwende Matplotlib, um Daten als Funktion der Zeit im Format hh: mm: ss.ms zu plotten, wobei ms Millisekunden ist. Allerdings sehe ich die Millisekunden in der Handlung nicht. Ist es möglich, sie auch hinzuzufügen? zeigt Millisekunden in Matplotlib

dates = matplotlib.dates.datestr2num(x_values) # convert string dates to numbers 
plt.plot_date(dates, y_values) # doesn't show milliseconds 
+1

hey dort, bitte posten Sie etwas Code, der zeigt, was Sie tun. Auf diese Weise ist es ein bisschen leichter zu helfen, Prost. – fraxel

+0

Möglicherweise müssen Sie ein Qualifikationsmerkmal hinzufügen, um die Anzahl der angezeigten Dezimalstellen zu definieren, z. B.% .2f. Ohne jedoch mehr von Ihrem Code zu sehen, ist es schwer zu wissen. – cosmosis

+0

Könnten Sie bitte ein Beispiel posten? danke – Bob

Antwort

8

Das Problem hier ist, dass es eine Klasse-Format ist Zecken und plot_date setzt diese Klasse auf etwas, das Sie nicht wollen: eine automatische Formatierer, die nie Millisekunden aufgetragen ist.

Um dies zu ändern, müssen Sie von matplotlib.dates.AutoDateFormatter zu Ihrem eigenen Formatierer wechseln. matplotlib.dates.DateFormatter (fmt) erstellt einen Formatierer mit der Formatstring datetime.strftime. Ich bin mir nicht sicher, wie man das in Millisekunden anzeigt, aber es wird Mikrosekunden zeigen, von denen ich hoffe, dass sie für Sie arbeiten werden; es ist schließlich nur eine extra Null. Versuchen Sie diesen Code:

dates = matplotlib.dates.datestr2num(x_values) # convert string dates to numbers 
plt.plot_date(dates, y_values) # doesn't show milliseconds by default. 

# This changes the formatter. 
plt.gca().xaxis.set_major_formatter(matplotlib.dates.DateFormatter("%H:%M:%S.%f")) 

# Redraw the plot. 
plt.draw()