首页 > 解决方案 > 如何在同一图表上绘制包含日期和整数的列表(相关性)?

问题描述

我需要在图表上绘制这些列表。第一个元素是 x 点,第二个元素是 y 点。基本上,每个列表都是一个点。所以一个点将是 ((2009,4,2,22,50,60),0) 等等。它们都应该绘制在同一张图上并用一条线连接。我拥有的数据非常大,存储在一个 2GB 的文本文件中。这是我的数据的示例。

[datetime.datetime(2009, 4, 2, 22, 50, 6), 0]
[datetime.datetime(2009, 4, 2, 23, 47, 41), 0]
[datetime.datetime(2009, 4, 2, 23, 54, 37), 0]
[datetime.datetime(2009, 4, 15, 21, 58, 14), 0]
[datetime.datetime(2009, 4, 29, 13, 12, 23), 0]
[datetime.datetime(2009, 5, 5, 18, 21, 13), 0]
[datetime.datetime(2009, 5, 11, 21, 8), 0]

我的代码是:(注意:“word”变量是文本文件的列表,即:我的数据)

import matplotlib.pyplot as plt
import numpy as np
import sentmod as s
with open('newdata.txt') as f:
for line in f:
    tweet=re.sub(r'T\t',"",line)
    t=re.sub(r'W\t',"\/\/",tweet)
    data=t.split("\/\/")
    sentiment_value= s.sentiment(data[1])
    data.append(sentiment_value)

    words = [w.replace('pos', '1') for w in data]
    word=[w.replace('neg','0')for w in words]
    del word[1]
    word[1]=int(word[1])

    word[0]=datetime.strptime(word[0],'%Y-%m-%d %H:%M:%S ')
    print(word)

我试着添加这个

    values= (word)
    ax = plt.subplot(111)
    ax.plot_date([value[0] for value in values], [value[1] for value in values], "-o")
    plt.show()

但我收到以下错误:

   TypeError: 'datetime.datetime' object is not subscriptable

添加代码时的结果

标签: pythonmatplotlib

解决方案


我不确定这里的问题,为什么不简单地使用plot_date函数?

import matplotlib.pyplot as plt
import datetime

values = [
    [datetime.datetime(2009, 4, 2, 22, 50, 6), 0],
    [datetime.datetime(2009, 4, 2, 23, 47, 41), 0],
    [datetime.datetime(2009, 4, 2, 23, 54, 37), 0],
    [datetime.datetime(2009, 4, 15, 21, 58, 14), 0],
    [datetime.datetime(2009, 4, 29, 13, 12, 23), 0],
    [datetime.datetime(2009, 5, 5, 18, 21, 13), 0],
    [datetime.datetime(2009, 5, 11, 21, 8), 0]
    ]

ax = plt.subplot(111)
ax.plot_date([value[0] for value in values], [value[1] for value in values], "-o")
plt.show()

推荐阅读