Изменение цветовой карты для категориальных данных в Holoviews / Datashader - PullRequest
0 голосов
/ 03 января 2019

Я пытаюсь визуализировать категориальные пространственные данные, используя Datashader и Holoviews, аналогично https://anaconda.org/jbednar/census-hv-dask/notebook. Однако, когда я пытаюсь назначить разные цвета категориям, я всегда получаю одинаковые (предположительно по умолчанию) цвета ( Пример выходного изображения .)

Вот код, который я запускаю в блокноте Jupyter.Может ли кто-нибудь посоветовать мне, как заставить работать пользовательскую карту цветов?Или, по крайней мере, запустите код, чтобы увидеть, в конечном итоге вы получите цвета, соответствующие легенде или нет.Спасибо!

from sklearn.datasets.samples_generator import make_blobs
from matplotlib import pyplot
import pandas as pd

import holoviews as hv
import geoviews as gv
import datashader as ds
from cartopy import crs
from matplotlib.cm import get_cmap
from holoviews.operation.datashader import datashade, aggregate
hv.notebook_extension('bokeh', width=95)

# Generating blob data:
X, y = make_blobs(n_samples=5000000, centers=5, n_features=2)
df = pd.DataFrame(dict(x=X[:,0], y=X[:,1], label=y))

# Plotting the blobs using datashader and holoviews:
%opts Overlay [width=800 height=455 xaxis=None yaxis=None show_grid=False] 
%opts Shape (fill_color=None line_width=1.5) [apply_ranges=False] 
%opts Points [apply_ranges=False] WMTS (alpha=0.5) NdOverlay [tools=['tap']]

color_key = {0:'red', 1:'blue', 2:'green', 3:'yellow', 4:'black'}
labels    = {0:'red', 1:'blue', 2:'green', 3:'yellow', 4:'black'}

color_points = hv.NdOverlay({labels[k]: gv.Points([0,0], crs=crs.PlateCarree(),
                            label=labels[k])(style=dict(color=v))
                            for k, v in color_key.items()})

dataset = gv.Dataset(df, kdims=['x', 'y'], vdims=['label'])
shaded = datashade(hv.Points(dataset), cmap=color_key, aggregator=ds.count_cat('label'))

shaded * color_points

1 Ответ

0 голосов
/ 03 января 2019

Этот код не работает (гонки не определены, а gv не импортирован), но в любом случае категориальные цвета определяются аргументом color_key, а не cmap, поэтому нужно изменить cmap=color_key на color_key=color_key.

...