Python-绘制时间序列数据并使用线连接两个点

时间:2019-07-12 12:54:41

标签: python dataframe plot graph time-series

虽然看起来并不那么困难,但对于我的一生,我无法弄清楚。任何帮助将不胜感激。这是我的情况:

我有一个数据框df1,其中包含日期和价格。我可以使用此数据通过matplotlib.pyplot绘制图形。到目前为止很好。

我有另一个数据框df2,它再次包含日期和价格信息,但只包含6行。现在,我需要获取df2的前两行,并将其视为两个点(x轴为Date,y轴为Price),然后将它们连接到上面绘制的图形上。与接下来的两行相同,依此类推。 (df2中将有更多行,但我希望您能得到满意的结果)。

我试图在两个df上一个又一个地调用plot()-结果是,当调用df2.plot()时,使用df1.plot()绘制的图形将被擦除,并绘制df2线。

下面是我需要结果如何显示的样子。 enter image description here

2 个答案:

答案 0 :(得分:2)

df = pd.read_csv(r'https://vincentarelbundock.github.io/Rdatasets/csv/fpp2/goog200.csv', index_col=0)
df2 = df.loc[[57, 98, 169]]

plt.plot(df['time'], df['value'])
plt.plot(df2['time'], df2['value'])
plt.show()

enter image description here


编辑每个评论

(在OP的注释中注明user23564的链接答案)

df = pd.read_csv(r'https://vincentarelbundock.github.io/Rdatasets/csv/fpp2/goog200.csv', index_col=0)
df2 = df.loc[[57, 98, 169, 200]].reset_index()

plt.plot(df['time'], df['value'])
for i in range(0, len(df2), 2):
    plt.plot(df2.loc[i:i+1, 'time'], df2.loc[i:i+1, 'value'], c='grey')
plt.show()

enter image description here

答案 1 :(得分:-1)

这是一个示例,摘自https://python-graph-gallery.com/122-multiple-lines-chart/

它在同一张图表中绘制了几条线。

# libraries
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# Data
df=pd.DataFrame({'x': range(1,11), 'y1': np.random.randn(10), 'y2': np.random.randn(10)+range(1,11), 'y3': np.random.randn(10)+range(11,21) })

# multiple line plot
plt.plot( 'x', 'y1', data=df, marker='o', markerfacecolor='blue', markersize=12, color='skyblue', linewidth=4)
plt.plot( 'x', 'y2', data=df, marker='', color='olive', linewidth=2)
plt.plot( 'x', 'y3', data=df, marker='', color='olive', linewidth=2, linestyle='dashed', label="toto")
plt.show()