我在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。有没有办法避免这种情况,只显示营业时间:分钟:秒?
我附上当前结果以显示我的问题:
答案 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"
:
如果您看到不同的图像,可能是因为您使用旧版本的matplotlib。您可以尝试明确设置DateFormatter
import matplotlib.dates
fmt = matplotlib.dates.DateFormatter('%H:%M:%S')
plt.gca().xaxis.set_major_formatter(fmt)
您也可以(或另外)尝试使用plot.plot_date()
代替plt.plot()
。