【问题标题】:Shading time series data from pandas dataframe对 pandas 数据框中的时间序列数据进行着色
【发布时间】: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,因为我的数据集越来越大,而且绘制内容甚至读取数据都花费了不合理的时间。

Zoomed in on one cluster

【问题讨论】:

  • 你想如何遮蔽时间戳?你能画出你所期望的吗?
  • 我已对问题进行了编辑,添加了一张图片,显示了我想要重现的内容。
  • 这看起来像条形图,而不是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


【解决方案1】:

我认为pandas.DataFrame.plot默认会创建一个新人物。
如果您只是切换绘图命令,从数据框 before 和行 after 中绘制数据,您将得到一个图形。

svt_data.plot(x='time', y="size", color="black")

for i in asp_data.asp1:
    plt.axvline(i,color=(0,1,0),alpha='0.5')

【讨论】:

    猜你喜欢
    • 2020-02-29
    • 2016-09-10
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 2021-04-05
    • 2012-09-03
    • 1970-01-01
    • 2017-02-04
    相关资源
    最近更新 更多