2017-04-17 52 views
0

绘制时候删除%F字我有一个CSV文件中的以下时间序列:与matplotlib

20:01:20,4254215 
20:01:36,5216326 
20:02:45,6363636 
20:02:48,2553266 
... 

第一列是时间格式小时:分钟:秒。第二个是另一个数据。我按以下方式绘制它:

import matplotlib.pyplot as plt 
import csv 
from datetime import datetime 

... 

with open('mydata.dat', 'r') as csvfile: 
    myfile = csv.reader(csvfile, delimiter=',') 
    for row in myfile: 
     a = datetime.strptime((row[0]),'%H:%M:%S') 
     x.append((a)) 
     y.append(row[1]) 

... 

plt.gcf().autofmt_xdate() 
plt.plot(x, y) 
plt.show() 

问题是生成的图形在x轴中有%f。有什么办法可以避免这种情况,只显示Hours:Minutes:Seconds?

附上当前结果显示我的问题:

Graph generated

+0

我看不到逗号。 –

+0

你说得对,更新了 –

回答

2

下面的代码

import matplotlib.pyplot as plt 
import csv 
from datetime import datetime 

x = [];y=[] 

with open('data/mydata.dat', 'r') as csvfile: 
    myfile = csv.reader(csvfile, delimiter=',') 
    for row in myfile: 
     a = datetime.strptime((row[0]),'%H:%M:%S') 
     x.append((a)) 
     y.append(row[1]) 


plt.plot(x, y) 
plt.gcf().autofmt_xdate() 

plt.show() 

产生这一形象,没有任何"%f"存在于ticklabels:

enter image description here

如果您看到不同的图像,可能是因为您使用了旧版本的matplotlib。您可以尝试设置DateFormatter明确地

import matplotlib.dates 
fmt = matplotlib.dates.DateFormatter('%H:%M:%S') 
plt.gca().xaxis.set_major_formatter(fmt) 

你也可以(或附加)尝试使用plot.plot_date()而不是plt.plot()

+0

'Microsecond'它们被省略了吗? – Surajano

+0

我的不好,最初的数据文件先前被转换成带有“,”分隔符的CSV文件。然而,我尝试了你显示的代码,并且我仍然在图中生成了%f字符 –

+0

我用两个建议更新了答案。 – ImportanceOfBeingErnest