Holoviews中如何用标记替代颜色区分island?求cmap等效的marker设置方法
用标记(Marker)替代颜色区分Holoviews散点图的类别
Holoviews里没有和cmap完全同名的marker参数,但可以用和颜色映射逻辑一致的方式,实现按类别分配不同标记。
核心思路是用dim('列名').categorize()方法,把每个类别映射到对应的标记类型,和cmap映射颜色的逻辑完全匹配。
修改后的代码如下:
from holoviews import extension, dim, opts, Scatter from pandas import read_csv extension('bokeh') url = 'https://raw.githubusercontent.com/mwaskom/seaborn-data/master/penguins.csv' df = read_csv(url) scatterplot = Scatter(df, 'flipper_length_mm', ['body_mass_g','island'] ) # 定义岛屿类别到标记的映射,和原cmap的颜色列表对应逻辑一致 marker_map = {'Torgersen': 'circle', 'Biscoe': 'square', 'Dream': 'triangle'} scatterplot.opts( marker=dim('island').categorize(marker_map), # 可以设置统一颜色,也可以保留颜色区分(如果需要的话) color='darkslategray' )
关键说明:
marker_map字典里的键是你的island列的具体类别值,值是Bokeh支持的标记类型,可选类型包括circle、square、triangle、diamond、cross、x等dim('island').categorize(marker_map)会自动把每个数据点的island值对应到字典里的标记,和你之前用dim('island').str()配合cmap分配颜色的逻辑完全一致- 如果需要同时保留颜色和标记区分,也可以保留原来的
color参数设置
内容的提问来源于stack exchange,提问作者Primo Petri
相关产品推荐
相关产品推荐

