使用数据着色器的时间序列图

时间:2018-10-09 22:29:23

标签: python time-series data-visualization bokeh datashader

我的目标是利用datashader绘制时间序列数据,并在可能的情况下使用bokeh或datashader本身进行交互。

我试图按照本教程http://datashader.org/user_guide/3_Timeseries.html进行操作,并提出了显示在url页末尾的图形。

下面是代码:

n = 100000
points = 10
data = np.random.normal(0, 100, size = (n, points))
df = ds.utils.dataframe_from_multiple_sequences(np.arange(points), data)
cvs = ds.Canvas(plot_height=400, plot_width=1000)
agg = cvs.line(df, 'x', 'y', ds.count())   
img = tf.shade(agg, how='eq_hist')

上面的代码中形成了一个图像对象,现在我该如何利用这个img对象使它成为具有显示x和y轴的交互式图形(使用bokeh或datashader),并显示将鼠标悬停在每个点上的详细信息图形,并具有放大和缩小功能。

此外,上面的数据框具有多个列,但是为了进行绘图,将多个列作为数据框中的行添加,并由数据框中的NA行分隔(如上面的代码所示)。如果可以在交互式图形中以不同的颜色绘制列,以便在数据着色器图形中轻松区分该列,是否可能。

请帮助。

1 个答案:

答案 0 :(得分:0)

使用HoloViews可以很容易地在其中绘制交互式散景图:

import datashader as ds, numpy as np, holoviews as hv
from holoviews.operation.datashader import datashade

n = 100000
points = 10
data = np.random.normal(0, 100, size = (n, points))
df = ds.utils.dataframe_from_multiple_sequences(np.arange(points), data)

hv.extension("bokeh")
datashade(hv.Curve(df)).options(width=1000)

Unzoomed

Zoomed

对于着色,您需要多少种不同的颜色?人类无法分辨出100,000种颜色,但是我正在https://github.com/pyviz/colorcet/issues/11进行研究,以获得至少数百种可分辨的颜色。如果您只需要几十个颜色(例如按类别着色),则现有的颜色周期应该可以正常工作。数据将需要首先指明类别...