python - 如何使用 Python Pandas DataFrame 在同一个图中依次绘制多个数据
问题描述
我试图可视化一个 facebook 股票数据集,其中存储了 2014 年至 2018 年的数据。数据集如下所示:数据集截图
我的目标是可视化结束列,但按年份。也就是说,2014 年,2015 年等等,但它们应该是一个数字,一个接一个。像这样:预期的图形图像
但无论我尝试什么,所有图形部分都从索引 0 开始,而不是从前一个的末尾继续。这是我得到的:我生成的图表
请帮我解决这个问题。谢谢!
解决方案
最直接的方法是简单地为不需要的日期创建带有空值的单独数据框。
这里我使用一个示例数据集。
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)
结果
推荐阅读
- javascript - 当满足条件时,如何仅为实例执行嵌套 for 循环内的代码?
- haskell - 用 let fun x = x + 1 形式定义 Haskell 函数
- java - 来自 Android Visualizer 的 FFT 数据取决于音量
- angular - Visual Studio Code compileOnSave 停止工作
- python - 从文本文件中读取,如果列表中有句子定义
- powershell - 使用 PowerShell 删除文件名中的所有字符(包括一个字符)
- java - Spring boot:无法加载缓存项:javax/servlet/Filter
- java - 在 ScrollView/LinearLayout 中单击 TextView?
- c# - 错误模块名称:UWP 应用程序中的 Windows.UI.Xaml.dll
- python - 需要一种方法来获取三个 csv 文件并将其放入一个文件中,并在 Python 中删除重复项和替换值