Plotly中的Datashader聚合色条

3
我可以帮您翻译。这段内容是关于如何在使用Datashader绘制数据时绘制颜色条的问题。作者正在使用包含位置和方向(0-360度)信息的车辆数据。
以下是最小化的Datashader代码:
import seaborn as sns, datashader as ds
from matplotlib.cm import ListedColormap

cmap = ListedColormap(sns.color_palette("hls", 8).as_hex())
agg = canvas.points(df, "longitude", "latitude", ds.mean("heading"))
img = tf.shade(agg, cmap=cmap, how="eq_hist")
img

这会生成一张色彩斑斓、道路和方向清晰的图片,但是如果没有图例,就无法确定哪种颜色代表哪个方向。 目前我正在使用Plotly使绘图交互化,因为某些原因,holoviews/bokeh方法有些问题。这是我遵循的教程,将它们结合起来:https://plot.ly/python/v3/change-callbacks-datashader/
2个回答

1
Datashader不是用来渲染诸如坐标轴和色条之类的东西,而是依赖于嵌入到外部库中进行此类操作。如何实现取决于外部库。对于你链接的plotly示例,最直接的方法是将gen_ds_image函数更改为返回agg_scatter而不是img,然后使用Plotly的数组绘图功能进行颜色映射并创建一个自动匹配的色条。我不常使用Plotly,无法为您提供任何指导,但对于Plotly用户来说,这应该很简单,因为gen_ds_image的结果将仅是每个像素的方向的2D数组,可以轻松地绘制为颜色。
我不确定您在Bokeh+HoloViews方法方面遇到了什么问题,但它所需的代码应该比那个Plotly示例少得多;您只需要确保使用rasterize()而不是datashade()(让Bokeh进行颜色映射和匹配colorbar)。有关背景信息,请参见https://anaconda.org/jbednar/datashade_vs_rasterize/notebook

1
我已经花了几个小时在这本笔记本里寻找信息!终于明白为什么我不能像制作地图那样简单地做一个色条。请广泛分享这本笔记本。它在我(非常多)的谷歌搜索中没有出现过。 - undefined
@mkosmala 你找到解决办法了吗?我看了笔记本,没有找到可以转换为plotly的任何信息。 在plotly中,无法使用Scatternapbox进行数组绘图。我不明白为什么这个回答被点赞,只是讨论其他软件包而已,没有给出任何答案。 - undefined

0

我在原始帖子中使用了datashader,并像这里一样添加了一个colorbar_trace:a link,它起作用了。

我唯一做的更改是将颜色比例尺从red_blue更新为fire,并将散点图的背景颜色更改为“黑色”,以匹配地图。

因此,在datashader链接的update_layout部分中添加以下内容:

plot_bgcolor="black",
paper_bgcolor="black"

并在stackoverflow链接的marker部分添加以下内容:
colorscale=fire


你的回答可以通过提供更多支持性信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人能够确认你的回答是否正确。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接