首页 > 解决方案 > hvplot - 如何通过分类变量为点数据着色并与 `ds.count_cat(.)` 聚合

问题描述

我正在尝试使用hvplot重新创建数据着色器人口普查分类示例。

import cartopy.crs as ccrs
import datashader as ds
import dask.dataframe as dd
import hvplot.dask


ddf = dd.read_parquet("census2010.parq").persist()

ddf.hvplot.points(x="easting", y="northing", 
                  aggregator=ds.count_cat("race"),
                  datashade=True,
                  crs=ccrs.GOOGLE_MERCATOR)

不幸的是,我得到:

WARNING:param.dynamic_operation: Callable raised "ValueError('Aggregation column race not found on :Points   [easting,northing] element. Ensure the aggregator references an existing dimension.',)".

标签: pythonholoviewsdatashaderpyvizhvplot

解决方案


事实证明,我没有在任何全息视图维度中定义变量来着色,“种族”。它可以vdims通过c="race"c表示要在哪一列上着色)添加:

在此处输入图像描述

完整的代码应该是(包括自定义颜色图):

 ddf.hvplot.points(x="easting", y="northing", 

                      c="race",
                      cmap={'w':'aqua', 'b':'lime',  'a':'red', 'h':'fuchsia', 'o':'yellow' }

                      aggregator=ds.count_cat("race"),
                      datashade=True,
                      crs=ccrs.GOOGLE_MERCATOR,
                     ).opts(bgcolor="black")

在此处输入图像描述


推荐阅读