根据原始数字在Matplotlib中的X上绘制日期

时间:2018-09-30 18:31:48

标签: python-3.x matplotlib plot

我正在尝试绘制列表中收集的信息。这只是聊天记录中用户每天发送多少消息的统计信息。我在将日期从数据传输到绘图的X轴时遇到问题。它一直显示为正常数字。

list_of_records = [record1, record2, record3, ...]

其中:

record = ['name', messages number, day, month, year]

真实数据示例:

list_of_records = [['F', 2, 23, 9, 2018], ['A', 1, 23, 9, 2018], ['F', 2, 3, 7, 2018], 
['A', 2, 3, 7, 2018], ['A', 2, 3, 7, 2018], ['F', 2, 3, 7, 2018], ['F', 2, 3, 7, 2018]

现在我正在查看:link1link1link1link1

但是,这对我来说并没有多大意义,因为他们总是从某个地方导入数据。

我猜想我必须从matplotlib导入某种类型的lib才能将要从数组中提取的数字转换为日期的绘图友好格式。然后使用其他子库将其与日期一起绘制。但是怎么做呢?我没有线索。

这是我第一次使用matplot lib,所以请不要过于笼统地回答。

我的代码:

from matplotlib import pyplot as plt

list = [['F', 2, 23, 9, 2018], ['A', 1, 23, 9, 2018], ['F', 2, 3, 7, 2018], ['A', 2, 3, 7, 2018], ['A', 2, 3, 7, 2018], ['F', 2, 3, 7, 2018], ['F', 2, 3, 7, 2018], ['F', 2, 3, 7, 2018], ['A', 2, 3, 7, 2018], ['F', 2, 3, 7, 2018], ['A', 2, 3, 7, 2018], ['F', 2, 3, 7, 2018]]

plot_x_A = []
plot_y_A = []
plot_x_F = []
plot_y_F = []

for value in list:
    if value[0] == "F":
        plot_x_F.append((value[-1],value[-2],value[-3])) 
        #X value - take year, month and day and pack in in tuple
        plot_y_F.append(value[1])                        
        #Y value - just number
    if value[0] == "A":
        plot_x_A.append((value[-1],value[-2],value[-3]))
        plot_y_A.append(value[1])

#print(plot_x_A)                 #double check myself if it looks all right
#print(plot_y_A)

plt.plot_date(plot_x_A,plot_y_A,xdate=True)
plt.show()

0 个答案:

没有答案