我的目标是利用数据着色器绘制时间序列数据,并在可能的情况下使用 Bokeh 或数据着色器本身使其具有交互性。
我尝试遵循本教程 - 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 对象使它成为一个交互式图形(使用 Bokeh 或数据着色器)显示 x 和 y 轴,显示悬停在每个点的细节图表并带有放大和缩小功能。
另外,上面的数据框有多个列,但为了绘制,多列被添加为数据框中的行,由数据框中的 NA 行分隔(如上面的代码所示)。是否可以在交互式图形中绘制不同颜色的列,以便在数据着色器图形中轻松区分列。
请帮忙。
最佳答案
使用 HoloViews 很容易从中制作交互式 Bokeh 图:
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获得至少几百种可区分的颜色。如果您只需要几十个(例如按类别着色)现有的颜色循环应该可以正常工作。数据会以某种方式首先需要指明类别...
关于python - 使用数据着色器绘制时间序列图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52730204/