在S.O.上发现以下解决方案来绘制多个数据框:
ax = df1.plot()
df2.plot(AX = AX)
但是,如果我只想绘制它们重叠的位置呢?
假设df1索引是跨越24小时的时间戳,而df2索引也是在df1的24小时内跨越12小时的时间戳(但与df1不完全相同)。
如果我只想绘制两个数据帧所涵盖的12小时。有什么方法可以做到这一点?
答案 0 :(得分:2)
一般性问题的一般答案:
您有三种选择:
xlim
keyword。答案 1 :(得分:1)
有多种方法可以实现这一目标。下面的代码段显示了两种方式作为示例。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# Make up time data for 24 hour period and 12 hour period
times1 = pd.date_range('1/30/2016 12:00:00', '1/31/2016 12:00:00', freq='H')
times2 = pd.date_range('1/30/2016 12:00:00', '1/31/2016 00:00:00', freq='H')
# Put time into DataFrame
df1 = pd.DataFrame(np.cumsum(np.random.randn(times1.size)), columns=['24 hrs'],
index=times1)
df2 = pd.DataFrame(np.cumsum(np.random.randn(times2.size)), columns=['12 hrs'],
index=times2)
# Method 1: Filter first dataframe according to second dataframe's time index
fig1, ax1 = plt.subplots()
df1.loc[times2].plot(ax=ax1)
df2.plot(ax=ax1)
# Method 2: Set the x limits of the axis
fig2, ax2 = plt.subplots()
df1.plot(ax=ax2)
df2.plot(ax=ax2)
ax2.set_xlim(times2.min(), times2.max())
答案 2 :(得分:1)
要仅绘制其索引位于df2索引范围内的df1部分,您可以执行以下操作:
ax = df1.loc [df2.index.min():df2.index.max()]。plot()
可能有其他方法可以做到这一点,但这是我首先想到的。
祝你好运!