使用matplotlib绘制时间时删除%f字符

时间:2017-04-17 08:31:25

标签: python matplotlib plot time graph

我在CSV文件中有以下时间序列:

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。有没有办法避免这种情况,只显示营业时间:分钟:秒?

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

Graph generated

1 个答案:

答案 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()

生成此图像,而ticklabels中没有任何"%f"

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()