You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Datashader/HoloViews图表按自定义类别上色并启用色条

使用Datashader绘制带类别配色与色条的大规模地理散点图

针对你拥有的500万条带自定义温度类别的地理数据,以下是实现指定需求的完整方案:

核心思路

利用Datashader的大规模数据渲染能力,结合自定义类别配色映射,通过hvPlot(封装Datashader的易用工具)快速生成带色条的可视化图表,避免百万级数据导致的性能问题。

步骤实现

1. 导入依赖库

import pandas as pd
import hvplot.pandas  # 封装Datashader的可视化工具

2. 定义自定义类别配色映射

根据你的category列取值,创建一一对应的颜色字典:

color_map = {
    'green': '#008000',
    'blue': '#0000FF',
    'yellow': '#FFFF00',
    'indigo': '#4B0082',
    'red': '#FF0000'
}

3. 绘制Datashader图表(带色条)

直接调用hvPlot的points方法,启用Datashader渲染并配置配色与色条:

df.hvplot.points(
    x='long', 
    y='lat', 
    datashade=True,  # 启用Datashader处理大规模数据
    color='category',  # 按category列映射颜色
    cmap=color_map,  # 应用自定义配色
    colorbar=True,  # 显示色条
    width=800, 
    height=600,
    title='Temperature Category Geographic Distribution'
)

纯Datashader原生实现(可选)

如果需要完全基于Datashader原生API实现,可使用以下代码(需手动处理色条):

import datashader as ds
import datashader.transfer_functions as tf
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap

# 创建画布
x_range = (df['long'].min(), df['long'].max())
y_range = (df['lat'].min(), df['lat'].max())
cvs = ds.Canvas(plot_width=800, plot_height=600, x_range=x_range, y_range=y_range)

# 按类别聚合数据
agg = cvs.points(df, 'long', 'lat', ds.count_cat('category'))

# 渲染图像
img = tf.shade(agg, color_key=color_map)
img = tf.set_background(img, 'white')

# 生成并显示色条
cmap = ListedColormap([color_map[c] for c in color_map.keys()])
fig, ax = plt.subplots(figsize=(10, 1))
fig.subplots_adjust(bottom=0.5)
cb = plt.colorbar(plt.cm.ScalarMappable(cmap=cmap), cax=ax, orientation='horizontal', ticks=range(len(color_map)))
cb.set_ticklabels(color_map.keys())
plt.show()

# 显示渲染后的地图
display(img.to_pil())

关键说明

  • datashade=True:强制使用Datashader渲染,避免百万级数据导致的内存溢出与卡顿
  • 配色映射需确保覆盖所有category取值,否则未匹配的类别会显示默认颜色
  • hvPlot方式无需手动处理画布范围,会自动根据数据适配

内容的提问来源于stack exchange,提问作者Debashish Samantaray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 04:30:50