【发布时间】:2019-11-27 17:45:39
【问题描述】:
我有两个 Pandas 数据框:svt_data 和 asp_data。第一个是时间序列数据,第二个是该序列中的特定时间。我可以使用svt_data.plot() 绘制时间序列数据没有问题。然后我想从第二个数据框中隐藏特定时间。
在过去,我通过迭代列表的元素并使用 matplotlib 的 plt.axvline 函数来完成此操作,而不是使用 pandas 数据帧,而是使用原生 python 列表。但是,当我遍历数据框元素并使用此函数时,它会生成两个数字而不是一个数字。它在一个图表上对第二个数据帧的特定时间进行着色,并在另一个图表上为我提供时间序列。
我怎样才能让他们在同一个情节上?
from numpy import *
from pandas import *
import pylab as plt
svt_data = read_csv("D:\\Archives\\workspace\\sizeTimeData.txt", sep=" ", header=None, names=["time", "size"])
asp_data = read_csv("D:\\Archives\\workspace\\asperityFailTimes.txt", sep=" ", header=None, names=["asp1"])
for i in asp_data.asp1:
plt.axvline(i,color=(0,1,0),alpha='0.5')
svt_data.plot(x='time', y="size", color="black")
plt.show()
编辑:这是使用列表而不是数据框生成的类似图表的样子。
我已切换到 pandas,因为我的数据集越来越大,而且绘制内容甚至读取数据都花费了不合理的时间。
【问题讨论】:
-
你想如何遮蔽时间戳?你能画出你所期望的吗?
-
我已对问题进行了编辑,添加了一张图片,显示了我想要重现的内容。
-
这看起来像条形图,而不是
svt_data.plot。阴影部分是时间段。 -
图片使用
plt.plot(time,size,"k-")制作;由于点的密度和“k-”线型,它看起来只是一个条形图。由于密度的原因,它们只是再次看起来像时间段。在更高分辨率的图像中,您将能够看到它只是识别单个时间步长。 -
最后一个问题,
asp_data是否分块出现?就像情节中出现的1,2,3, 8,9,10, 15,16,17?
标签: python pandas matplotlib time-series