2013-07-17 22 views
6

Bazı zaman damgalarını çizmek istiyorum (Yıl-ay-Gün-Saat-Saniye-İkinci biçim). Aşağıdaki kodu kullanıyorum, ancak herhangi bir saat dakika saniye bilgi göstermiyor, 00-00-00 olarak gösterir. Tarih dizimi iki kez kontrol ettim ve alt snippet'ten görebileceğiniz gibi, bunlar sıfır değil.Matplotlib ile çizim zaman damgaları (saat/dakika/saniye)

00-00-00'leri neden aldığım hakkında herhangi bir fikriniz var mı? enter image description here

import matplotlib.pyplot as plt 
import matplotlib.dates as md 
import dateutil 

dates = [dateutil.parser.parse(s) for s in datestrings] 
# datestrings = ['2012-02-21 11:28:17.980000', '2012-02-21 12:15:32.453000', '2012-02-21 23:26:23.734000', '2012-02-26 17:42:15.804000'] 
plt.subplots_adjust(bottom=0.2) 
plt.xticks(rotation= 80) 
ax=plt.gca() 
xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S') 
ax.xaxis.set_major_formatter(xfmt) 
plt.plot(dates[0:10],plt_data[0:10], "o-") 
plt.show() 

cevap

7

sizin grafikte yakınlaştırma deneyin, tarihsaat senin x ekseni ölçeği değiştikçe genişletmek göreceksiniz. kromozomları üzerinde olumlu seçimin yoğunluk haritalarını çizmek çalışırken

plotting unix timestamps in matplotlib

Ben benzer can sıkıcı sorun vardı. Çok uzaklara uzaklaşırsam bütünüyle yok olurum!

düzenleme: Bu kod, tam olarak verdiğiniz gibi tarihlerinizi çizer, ancak aralarında keneler eklemez.

import matplotlib.pyplot as plt 
import matplotlib.dates as md 
import dateutil 

datestrings = ['2012-02-21 11:28:17.980000', '2012-02-21 12:15:32.453000', '2012-02-21 23:26:23.734000', '2012-02-26 17:42:15.804000'] 
dates = [dateutil.parser.parse(s) for s in datestrings] 

plt_data = range(5,9) 
plt.subplots_adjust(bottom=0.2) 
plt.xticks(rotation=25) 

ax=plt.gca() 
ax.set_xticks(dates) 

xfmt = md.DateFormatter('%Y-%m-%d %H:%M:%S') 
ax.xaxis.set_major_formatter(xfmt) 
plt.plot(dates,plt_data, "o-") 
plt.show() 
+0

Cevabınız için teşekkür ederiz. Ben zaten "matplotlib'de unix zaman damgasını çizme" sorusuna baktım. Ancak, benim sorunum, Matplotlib, "matplotlib'deki" unix zaman damgasını çizme "sorusundaki saat-dakika saniye göstermiyor. Benim durumumda sadece onları 00-00-00 olarak gösterir ve neden olduğunu anlayamıyorum (çünkü benim zaman damgalarım doğru gibi görünüyor) .. – user1048858

+0

Haklısın, çünkü x eksenini kenelerle doldurmaya çalışıyor çünkü , benim düzenlenmiş cevabımı gör. – seth

0

Size bunun neden 00:00:00 olduğunu gösterebilirim. Çünkü o belirli günün başlangıç ​​zamanı. Örneğin, bir onay 2012-02-22 00:00:00 (2012-02-22 arası 12 gece yarısı) ve bir diğeri de 2012-02-23 00:00:00 saatleri arasındadır (2012-02-23 arası 12 gece yarısı)).

Bu iki zaman arasındaki zaman damgalarının uçları gösterilmiyor.

Bu zamanlar arasında kenelerin nasıl gösterileceğini anlamaya çalışıyorum.