我有一张如下表:
np.random.seed(42)
df = pd.DataFrame(np.random.randint(0, 1000, size=(24,53)))
df['hour'] = range(24)
for col in df.columns[:-1]:
df.rename({col: str(col)}, axis=1, inplace=True)
我想绘制。列(除外hour
)对应于一年中的星期,行对应于一天中的小时。直接使用 pandas 将是:
df[df.columns[:-1]].plot(legend=False);
产生:
但是,我想在游戏中添加交互性。我想用,bokeh
但它变化太快,我现在不知道怎么做。我尝试使用holoviews
:
import holoviews as hv
hv.extension('bokeh')
%%opts Curve [tools=['hover']]
lines = [hv.Curve((df['hour'], df[col]), label=col) for col in df.columns[:-1]]
from functools import reduce
reduce(lambda x, y: x*y, lines) # I'm not sure this is a clean way
产生类似的东西:
这几乎是我想要的。特别是,悬停工具显示其下方点的 x/y 坐标。我希望它显示相应曲线的星期。最后,有没有更蟒蛇的方式来做到这一点?也许直接用bokeh
?