У меня есть следующая таблица:
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
) соответствуют неделям года , а строки - часам дня .Непосредственно с использованием панд это будет:
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
?