Как я могу изменить размер точек на моей карте в holoviews?

Вот мой код:

import holoviews as hv
import datashader as ds
import dask.dataframe as dd
import geoviews as gv
from cartopy import crs

from holoviews.operation.datashader import datashade

hv.extension('bokeh', width=95)

%opts RGB     [width=1200 height=682 xaxis=None yaxis=None show_grid=False bgcolor='black'] 
%opts Shape (fill_alpha=0 line_width=1.5) [apply_ranges=False tools=['tap']] 
%opts Points [apply_ranges=False ] WMTS (alpha=0.5)


color_key = {worda:'red',  wordb:'green'}
races     = {worda:worda, wordb:wordb}


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

census_points = hv.Points(df, kdims=['x', 'y'], vdims=['word'])

x_range, y_range = ((-13884029.0, -7453303.5), (2818291.5, 6335972.0)) # Continental USA

shade_defaults = dict(x_range=x_range, y_range=y_range, x_sampling=10, y_sampling=10, width=1200, height=682,
                      color_key=color_key, aggregator=ds.count_cat('word'),)
shaded = datashade(census_points, **shade_defaults)
shaded()

и результат выглядит так: введите описание изображения здесь, но я хочу, чтобы размер точек был больше, например так: введите описание изображения здесь

Как я могу изменить свой код для моей цели? Спасибо!

1 ответ

Как ответил Джеймс А. Беднар, использование dynspread() работает для увеличения точек на диаграмме разброса данных.
Ваш код должен выглядеть так:

from holoviews.operation.datashader import datashade, dynspread

dynspread(datashade(your_holoviews_scatterplot))

Это гарантирует, что точки на диаграмме рассеяния с измененными данными занимают больше пикселей на экране.

dynspread() имеет некоторые параметры, влияющие на размер маркеров, см. также:
Документация по dynspread()

Вы можете, например, изменить параметр порога, чтобы получить еще более крупные маркеры, хотя это не сделает график красивее. Порог может содержать значения от 0 до 1. Порог - это параметр настройки, более высокие значения дают больший разброс.

dynspread(datashade(your_holoviews_scatterplot), threshold=1.0)

(Скопировано из параллельного выпуска Github https://github.com/ioam/holoviews/issues/2877.)

До сих пор в datashader входят только бесконечно маленькие точки и бесконечно тонкие линии, которые были бы невидимы, если бы не ненулевая ширина пикселя в изображении. В конечном итоге мы планируем добавить способность точки или линии иметь экстент, но сейчас у вас есть несколько вариантов:

  1. Уменьшите разрешение вашего изображения, сделав каждый отдельный пиксель более заметным.
  2. Добавьте "from holoviews.operation.datashader import dynspread" (или "распространение"), а затем используйте растяжение для расширения каждого пикселя в соседние пиксели. Математически, это не то же самое, что иметь ненулевой экстент, но это приближение к нему, которое справедливо, когда точки находятся далеко друг от друга (как большинство из приведенных выше). Оба имеют параметры, которые вы можете изменить, чтобы выбрать, насколько большой вы хотите сделать точки.
Другие вопросы по тегам