问题标签 [datashader]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
131 浏览

python - 使用具有日期时间维度的 xarray DataArray 中的数据着色器进行绘图

我有一个二维的 xarray DataArray。一个维度是频率,另一个是时间。创建 DataArray 时,我指定坐标。

我遇到的问题是,如果我将时间坐标 (dt) 定义为 pandas date_range 或 timedelta_range

或者

数据着色器抛出错误

跑完之后

但是,我可以将时间坐标指定为一个np.arange对象,它具有int类型并且工作正常。但是后来我从数组中丢失了日期时间信息。

有没有解决的办法?

0 投票
1 回答
399 浏览

python - 使用 Datashader 和 Holoviews 具有多种颜色和图例的时间序列

我想绘制一个包含 3 列的时间序列数据框,每条曲线一个。我希望每条曲线都有自己的颜色并显示一个图例,hvplot()默认情况下也是如此。

这是一个独立的示例:

这是结果(左侧没有数据着色器,右侧有数据着色器):

在此处输入图像描述

将绘图传递给数据着色器时,颜色和图例会丢失。使用 的datashade=True参数hvplot具有相同的结果。

Datashader 文档中有一个关于时间序列绘图的教程,但它非常复杂,它datashader.transfer_functions.shade()用作操作图形的基础,而没有过多介绍它的工作原理,而且 API 也不是很清晰。我只想保留 bokeh/hvplot 默认提供的这些基本绘图功能,我不确定 datashader 不保留它们的原因,所以我不知道要修复什么。

如何向数据着色器发出信号以保留不同的颜色并绘制图例?

0 投票
0 回答
94 浏览

python - 将数据着色器添加到 matplotlib 子图 - 位置参数错误

我想使用数据着色器输出作为 plt 子图的输入。

我正在尝试运行此问题的答案中建议的代码: Add datashader image to matplotlib subplots

下面是代码:

我收到一个错误:

我尝试在此处查看 DSArtist 的源代码(https://github.com/holoviz/datashader/pull/200/files),但不太了解它。

如何解决错误?

谢谢!

0 投票
1 回答
100 浏览

python - 如何在数据着色器热图中填充或插入稀疏数据空白空间(欠采样)?

在数据着色器中绘制一组数据时,如果 X 轴具有离散数字和欠采样,则会在可以看到背景的列之间留下间隙。

我一直试图通过尝试设置更大的点大小或使用 dynspread 传递函数来解决这个问题。不走运——很可能是我不知道应用这些的正确方法。

这是重现我的意思的示例代码:

当然,使用 bokeh 绘制相同的集合会显示相同的内容。更糟糕的是,如果你放大:

0 投票
0 回答
154 浏览

bokeh - 使用 Holoviews 和 Bokeh 绘制 10 亿个点,需要捕获 lasso 几何以获得所选点

我对 Holoviews/DataShader/Bokeh 非常陌生,正在为研究项目分析这些库。我需要在散点图中绘制 10 亿个图,然后在图的套索上捕获选定的点,最好是选择的几何形状。

我确实遇到了这个例子——http: //holoviews.org/reference/streams/bokeh/Selection1D_points.html 我们需要通过DynamicMap 将您的选择流链接到holoviews 元素。然后,选择将保存您选择的索引。

下面是我尝试过并且成功获得几何图形的方法,但是绘图变得非常缓慢,如果它超过 100 万个点,我开始遇到浏览器内存问题,而且套索非常慢。

结果我也得到了两个图,因为单独的 hv.DynamicMap 不会显示这些点,我如何才能得到一个图。

0 投票
1 回答
171 浏览

python - Geotiff 叠加位置在 Holoviews/Bokeh 平铺地图上略微偏离

我有一个 Geotiff,我在瓷砖地图上显示,但它稍微偏南。例如,在这个屏幕截图中,图像的边缘应该是国家边界所在的位置,但它有点偏南:

问题截图

这是代码的相关部分:

你可以在 google colab 上看到 live notebook。

现在,当人们不将地图转换为 Web 墨卡托时,这不是常见的“一切都结束了”的问题。它几乎是完美的,但事实并非如此。

Geotiff 是一个地球引擎出口。这是它在 Earth Engine 中最初的样子(参见实时代码):
Earth Engine 中一切正常的屏幕截图
正如您所见,图像随处可见。

起初,我怀疑可能是导出出错了,或者谷歌地图瓦片集有些不同,但不是,如果我在 Windows 笔记本电脑上的 QGis 应用程序中打开相同的导出 Tiff 并在同一个 OSM 瓦片地图上查看它在 colab 笔记本中,它看起来不错:
QGis中一切正常的截图
好的,图像没有完美地遵循边界,但我知道为什么而且这不相关(我过度简化了国家边界几何)。关键是,它被投影到正确的位置。因此,基于此,tiff 包含正确的信息,它可以显示在与 OSM tilemap 中的边界相同的位置,但在我的 Holoviews-Datashader-Bokeh 项目中,它仍然略有偏差。

知道为什么会这样吗?

0 投票
1 回答
299 浏览

python - Holoviews“点”与 Datashader 一起使用,但“曲线”抛出错误

我正在 Jupyter Notebook 中的 Python 中处理大数据(约 2500 万点),并希望拥有一个也不会永远加载的交互式图表。使用 Bokeh 为我提供了交互性,而 Holoviews 和 Datashader 允许相对快速地绘制数据。

Python:3.7.6
散景:1.4.0
Holoviews:
1.14.3 Numpy:1.19.5
Pandas:1.0.1
Numba:0.48.0

我运行这个示例代码没有问题:

这给出了一个很好的图表:在此处输入图像描述

但是当我将 Holoviews 选项从“Points”切换到“Curve”(这是原始代码)时,如下所示:

我收到了这个很长的错误:

如果我删除“datashade”线并仅绘制 Holoviews 曲线图,那么它工作正常。但如果它是一个 2500 万点的图,那将需要很长时间,因此我需要 Datashader:

输出图: 在此处输入图像描述

关于可能导致此错误的任何想法?如果需要,我可以提供任何其他信息。

0 投票
1 回答
90 浏览

holoviews - Datashader:GeoDataFrames 的分类颜色映射

已安装的软件包

数据着色器 0.13.0,holoviews 1.14.4,geoviews 1.9.1.,散景 2.3.2。

我正在尝试做的事情

我正在尝试使用 Datashader 重新创建一个等值线图,其中一种颜色映射到大型 GeoDataFrame 中的一个类别,遵循管道页面中的这个示例以及这个以及这个SO,它们的语法和所有使用点都略有不同例如,而不是多边形。

可重现的代码示例

下面是完整数据集的一个小样本。

预期行为

我希望所有多边形都被光栅化并以每个类别的单一颜色显示。

观察到的行为

完整的数据集产生几乎是白色的图像,一些轮廓非常隐约可见。

在此处输入图像描述

如果我改变背景颜色,一些多边形会更加突出,尽管即使是标题也只是隐约可见。

在此处输入图像描述

这是否与 Datashader 计算有关,正如 Pipeline 笔记本所提到的,“根据每个类别对该像素的贡献,每个像素的透明度和颜色”?但是由于每个类别都是每个像素的唯一贡献者(即在这种情况下与其他类别没有空间重叠),为什么 alpha 似乎设置得如此之低以至于看不到任何东西?我还尝试了agg=ds.by('category')具有相同结果的聚合器。

顺便说一句,如果我删除“类别”列(否则会导致“输入必须是数字”错误)并将 GeoViews 与 HoloViews 结合使用,rasterize我可以毫无问题地使用一种颜色来可视化多边形,但我还没有弄清楚如何使用这种方法在同一个 Bokeh/或 mpl 图上绘制具有不同颜色映射的多个数据着色 GDF(通常的 HoloViews“叠加乘法”在这种情况下不起作用)。

0 投票
0 回答
97 浏览

python - 发生异常:OSError 无法加载共享对象文件:llvmlite.dll

我正在尝试通过以下方式导入 Python 的 datashader 包:

但我不断收到此错误:

发生异常:OSError 无法加载共享对象文件:llvmlite.dll

我尝试通过 conda 和 pip 安装/卸载软件包:

但我似乎无法修复。任何帮助表示赞赏。

0 投票
1 回答
108 浏览

python - 绘制分类数据时如何告诉数据着色器对 NA 值使用灰色

我有非常大的数据集,我无法直接使用全息视图进行绘制。我想用分类数据制作散点图。不幸的是,我的数据非常稀疏,许多点都将 NA 作为类别。我想让这些点变灰。有什么方法可以让数据着色器知道我想做什么?

我向您展示我现在的做法(正如https://holoviews.org/user_guide/Large_Data.html中或多或少提出的那样)。我给你举个例子:

它产生以下图片: 散点图的图片

您可以看到一些问题:最重要的是,虽然只有一个来自巴黎的人,但您会看到 NA 人(查理)也印有紫色,这是巴黎的颜色。有没有办法让点变灰?我尝试了很多情节,似乎 NA 总是采用图例中最后一项的颜色。

然后有一些我不想提出问题的小问题。(如果您认为他们应该提出自己的问题,请告诉我,我是 stackoverflow 的新手,感谢您的建议。)

另一个问题:这些点的大小并不相同。这是相当丑陋的。有没有办法改变它?

然后我还有一个问题:datashader内部是否也使用.cat.categories-method来决定使用什么颜色?数据着色器使用的颜色是如何确定的?因为我想知道图例是否总是按正确的顺序排列(显示正确的颜色:如果您在cats那时排列顺序color_key并且cats不再按相同的顺序并且图例显示错误的颜色)。它似乎总是像我一样工作,但我觉得有点不安全。

也许有人想给出他们的意见Points,在这种情况下是否可以用于散点图。因为我没有看到任何区别,Scatter并且在语义上也没有真正的一个变量会导致另一个变量(尽管有人可能会争辩说在这种情况下年龄会导致经验,但我将绘制不容易找到的变量那些类型的因果关系)所以Points如果我正确理解文档https://holoviews.org/reference/elements/bokeh/Points.html最好使用。