基于其中一列的pandas DataFrame子图Matplotlib axvspan着色

2024-09-30 01:21:33 发布

您现在位置:Python中文网/ 问答频道 /正文

基于数据帧中的一列对pandas子图进行着色的最优雅的方法是什么?在

一个简单的例子:

In [8]:
from random import *
import pandas as pd

randBinList = lambda n: [randint(0,1) for b in range(1,n+1)]
rng = pd.date_range('1/1/2011', periods=72, freq='H')
ts = pd.DataFrame({'Value1': randn(len(rng)),'Value2': randn(len(rng)),'OnOff': randBinList(len(rng))}, index=rng)
ts.plot(subplots=True)

结果如下图:

pandas subplots for axvspan

理想情况下,我希望使用Value1Value2的子图,两个图都用^{}进行着色,其中On(在{}中带有{}的值)是着色的,而{}是不着色的。在


Tags: 数据方法importpandaslenrange例子pd
1条回答
网友
1楼 · 发布于 2024-09-30 01:21:33

你已经做好准备了。不过,我认为您需要直接与matplotlib交互。在

如果您像这样设置数据帧(您已经拥有的):

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

randBinList = lambda n: [np.random.randint(0,2) for b in range(1,n+1)]
rng = pd.date_range('1/1/2011', periods=72, freq='H')
ts = pd.DataFrame({
    'Value1': np.random.randn(len(rng)),
    'Value2': np.random.randn(len(rng)),
    'OnOff': randBinList(len(rng))
}, index=rng)

然后您可以将fill_between命令与wherekwarg一起使用:

^{pr2}$

这给了我: toggle plot

相关问题 更多 >

    热门问题