Python matplotlib中给定相等间距的不一致时间序列

Python matplotlib中给定相等间距的不一致时间序列,python,pandas,matplotlib,Python,Pandas,Matplotlib,我正在从熊猫数据框绘制一个堆叠的折线图。数据是在两天的时间里不定期收集的。在下图中,您可以看到等距间隔之间的时间变化有所不同(等距间隔之间约7小时到36小时)。我不希望发生这种情况,我希望图形上的点被适当地拉伸和压缩,以便时间与x轴成线性比例。我该怎么做 数据读取如下: df = pd.read_csv("filepath", index_col=0) df = df.T plot = df.plot.area(rot=90) plot.axhline(y=2450, color="blac

我正在从熊猫数据框绘制一个堆叠的折线图。数据是在两天的时间里不定期收集的。在下图中,您可以看到等距间隔之间的时间变化有所不同(等距间隔之间约7小时到36小时)。我不希望发生这种情况,我希望图形上的点被适当地拉伸和压缩,以便时间与x轴成线性比例。我该怎么做

数据读取如下:

df = pd.read_csv("filepath", index_col=0)
df = df.T 
plot = df.plot.area(rot=90)
plot.axhline(y=2450, color="black")
如上所述,我必须为熊猫堆叠线图转换数据帧,以使其按我所希望的方式工作。该图制作如下:

df = pd.read_csv("filepath", index_col=0)
df = df.T 
plot = df.plot.area(rot=90)
plot.axhline(y=2450, color="black")

为了响应ImportantanceOfBeingernest,下面是一个最小、完整且可验证的示例:

import numpy as np
import pandas as pd
import matplotlib.pyplot as mpl

dateTimeIndex = ["04.12.17 23:03", "05.12.17 00:09", "05.12.17 21:44", "05.12.17 22:34", "08.12.17 16:23"]

d = {'one' : pd.Series(abs(np.random.randn(5)), index=dateTimeIndex),
     'two' : pd.Series(abs(np.random.randn(5)), index=dateTimeIndex),
     'three' : pd.Series(abs(np.random.randn(5)), index=dateTimeIndex)}

df = pd.DataFrame(d)

plot = df.plot.area(rot=90)
以下是数据帧的外观(随机值会有所不同):

情节如下:


正如您所知,dateTimeIndex条目是相当随机的,但它们在x轴上的间距是相等的。我不介意刻度线是否与数据点重合。我只想让时间线性扩展。这是如何实现的?

上面发生的事情是熊猫只是使用字符串作为x记号。您需要将
dateTimeIndex
设置为datetime对象:

dateTimeIndex = pd.to_datetime( ["04.12.17 23:03", "05.12.17 00:09", 
                "05.12.17 21:44", "05.12.17 22:34", "08.12.17 16:23"])

d = {'one' : pd.Series(abs(np.random.randn(5)), index=dateTimeIndex),
     'two' : pd.Series(abs(np.random.randn(5)), index=dateTimeIndex),
     'three' : pd.Series(abs(np.random.randn(5)), index=dateTimeIndex)}

df = pd.DataFrame(d)    
plot = df.plot.area(rot=90)

您是否尝试过对数据进行重新采样(),例如,以分钟为单位,并用
ffill
填充()缺失的值?如上所述,您必须选择填充样式,以创建线性时间序列。您必须用Nan、插值数据或常量来填充缺少的值。这里可能有几个问题。请提供一个,否则就无法找到。jo9k,我不明白重采样是如何工作的?因为时间戳是相对随机的(包括第二个细节),所以不确定它对我的数据会非常有效。有没有办法避免这种情况?另外,似乎正在创建大量不必要的数据。importantanceofbeingernest,我添加了一个更全面的示例,您可以自己使用。我希望这能让我的经历/努力变得更加清晰。这正是我所期待的!非常感谢你!