问题标签 [geoviews]
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.
matplotlib - GeoViews:将 matplotlib 样式参数应用于多边形元素
已安装的软件包
holoviews 1.14.4,geoviews 1.9.1.,matplotlib 3.4.2。
我正在尝试做的事情
我正在尝试使用GeoViews和matplolib后端应用简单的按功能样式。我无法弄清楚如何将不同的edgecolor=
参数应用于gv.Polygons
同一叠加层中的不同元素。出于某种原因,它们总是浅蓝色的……
同样,facecolor=
似乎也没有效果。
可重现的代码示例
这使用了完整数据集的一个非常小的样本。
观察到的行为的屏幕截图
这是来自完整数据集的屏幕。
预期行为
红色填充多边形属于gdf1
并且应该具有黑色边缘颜色,但它是浅蓝色。蓝色填充多边形属于gdf2
并且应该具有浅蓝色填充和蓝色边缘颜色,尽管相同的颜色似乎应用于填充和边缘。
我试过的
我没有使用该group=
参数来指定每个元素的样式(我不小心通过datashader 文档Polygon
偶然发现),而是尝试按照 HoloViews 文档中的建议进行多次“内联”调用。这也没有效果。opts
此外,cmap=['color']
这是我发现让GeoViews 不使用自动检测到的“使用”列gdf1
作为vdim
颜色映射的唯一方法。这是规范的方法和/或预期的行为吗?color=
或者facecolor=
即使在调用时列出它们似乎也没有效果gv.help(gv.opts.Polygons)
。
简而言之,我不明白如何为 matplotlib 后端应用这些特定的样式参数,并且非常感谢任何指针。
21 年 8 月 2 日 编辑
另一个奇怪的行为似乎是,在我的情况下,VSCode-Python 解释器中的图形似乎忠实地表示了符号系统,看起来与 .svg 生成的输出不同gv.save(layout, "test.svg", dpi=600, backend='matlplotlib')
。下图是同一脚本运行的输出。
解释器输出:
gv.save()
输出:
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“叠加乘法”在这种情况下不起作用)。
python - 覆盖面板布局组件?
是否可以覆盖面板布局组件?即,是否有类似“绘图级别”的pn.Row
// pn.Column
?pn.Pane
下面是一些示例代码来说明:
是否可以histpane
“悬停” mappane
,以便仍然可以操作地图(如缩放、单击、平移)?
geoviews - GeoViews:具有 matplotlib 后端的 GeoDataFrames 的分类图例
已安装的软件包
geoviews 1.9.1.,matplotlib 3.4.2。
我正在尝试做的事情
对于Bokeh
后端添加分类图例GeoViews
是通过代理艺术家完成的,如卡特里娜飓风示例中所述,我设法让它工作,但这对Matplotlib
后端有什么作用?Katrina 轨道案例的相应mpl 示例,特别是不包括图例。其他mpl
带有图例的示例都使用颜色条。
HoloViews
图例示例表明这是自动完成的,所以我认为同样适用,但是GeoViews
当尝试使用 GeoDataFrames 作为输入来重现示例时gv.Polygons
,没有出现图例。
可重现的例子
任何指针都将不胜感激(如果可能的话,也可以在几周前我的一个较早的相关 SO 问题上)。
python - GeoViews:使用 matplotlib 后端添加平铺底图
使用matplotlib
后端,是否可以将诸如 OSM 之类的图块底图添加到GeoViews
绘图中,例如通过某种方式调用contextily
?使用Bokeh
后端,这是通过gv.tile_sources
然后将其添加到叠加层来完成的,但是mpl
后端是否有类似的功能?
回复后编辑
添加一个可重现的示例,假设一个在后端之间切换,并在 EPSG:4326 中使用邻域级多边形 gdfs。
最初让我认为不可能添加底图的原因是(1)没有定义 WMTS 缩放级别(导致绘制无法辨认的像素化文本而不是特征),并且在阅读了 James 的回答后,(2)将切片图层添加到布局最后,而不是第一个,这导致瓷砖覆盖多边形层(在散景后端不是问题,但显然使用 matplotlib 确实很重要)。
python - Geoviews FilledContours:保持填充颜色但删除计数线
我想使用geoviews绘制类似于 kdeplot 的东西,而无需实际绘制轮廓线。geoplot库支持这样的东西:
我怎样才能在geoviews中制作这样的情节?
这是我设法通过geoviews生成的kdeplot类型的一个非常基本的示例,默认情况下会绘制分隔不同强度的黑线:
我找不到gv.FilledCountours
删除这些行的任何参数设置。
python - Geoviews 错误:“提供的数据不包含指定的维度”
当我尝试绘制 Postgis Linestring 时,感谢gv.Path()
or hvplot(geo=True)
,我有这个错误:Supplied data does not contain specified dimensions, the following dimensions were not found: ['Longitude', 'Latitude']
。
当我尝试可视化时:
当我这样做时hvplot(geo=False)
,它会起作用,但我想拥有一张底图并从 Geoview 的所有选项中受益。有人会有想法吗?
google-colaboratory - 如何让 Geoviews 在 Google Colab 中工作
我已经使用 geoviews 在 jupyter notebook 中构建了一些可视化,并且正在寻找一种更好的方式来共享它们,而无需其他工程师/分析师需要启动他们自己的 conda 环境。
我一直在尝试调整我的 Jupyter 笔记本以在 google colab 中运行,因为其他人更容易让它运行,但是当我尝试调用时,我在 colab 上遇到内核中断错误
gv.Points(数据, kdims=['lat', 'long'], vdims=['id'])
我的 geoviews 版本是 1.9.2。我已经能够让一些全息视图可视化工作。但我真的需要让一些地图可视化工作!
colab上的错误日志是:
WARNING WARNING:root:kernel 8f2d5acc-b562-43ab-8b4c-cadd62e1e02c 重新启动
INFO KernelRestarter:重启内核(1/5),保留随机端口
警告 python3: LineString.cpp:121: const geos::geom::CoordinateSequence* geos::geom::LineString::getCoordinatesRO() const: Assertion '0 != points.get()' 失败。
提前致谢!