2

我的目标是利用数据着色器绘制时间序列数据,并在可能的情况下使用散景或数据着色器本身使其具有交互性。

我尝试按照本教程进行操作 - 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 轴,显示悬停在图形上的每个点的详细信息和带有放大和缩小功能。

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

请帮忙。

4

1 回答 1

1

使用 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)

未缩放

放大

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

于 2018-10-11T01:47:33.193 回答