首页 > 解决方案 > 如何使用 Python Pandas DataFrame 在同一个图中依次绘制多个数据

问题描述

我试图可视化一个 facebook 股票数据集,其中存储了 2014 年至 2018 年的数据。数据集如下所示:数据集截图

我的目标是可视化结束列,但按年份。也就是说,2014 年,2015 年等等,但它们应该是一个数字,一个接一个。像这样:预期的图形图像

但无论我尝试什么,所有图形部分都从索引 0 开始,而不是从前一个的末尾继续。这是我得到的:我生成的图表

请帮我解决这个问题。谢谢!

标签: pythonpandasmatplotlib

解决方案


最直接的方法是简单地为不需要的日期创建带有空值的单独数据框。

这里我使用一个示例数据集。

import pandas as pd
import numpy as np

df = pd.DataFrame(
    np.random.randint(0, 100, size=100),
    index=pd.date_range(start="2020-01-01", periods=100, freq="D"),
)

然后您可以创建并选择要绘制的数据

df1 = df.copy()
df2 = df.copy()

df1[df.index > pd.to_datetime('2020-02-01')] = np.NaN
df2[df.index < pd.to_datetime('2020-02-01')] = np.NaN

然后简单地将它们绘制在同一轴上。

import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 1, figsize=(18, 8))

ax.plot(df1)
ax.plot(df2)

结果

在此处输入图像描述


推荐阅读