как я могу изменить размер точек на моей карте в 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()

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

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


person BozhiWang    schedule 16.07.2018    source источник


Ответы (2)


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

from holoviews.operation.datashader import datashade, dynspread

dynspread(datashade(your_holoviews_scatterplot))

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

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

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

dynspread(datashade(your_holoviews_scatterplot), threshold=1.0)
person Sander van den Oord    schedule 11.09.2019

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

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

  1. Уменьшите разрешение изображения, сделав каждый отдельный пиксель более заметным.
  2. Добавьте «из holoviews.operation.datashader import dynspread» (или «распространение»), затем используйте расширение для расширения каждого пикселя на соседние пиксели. Математически это не то же самое, что иметь ненулевую протяженность, но это приближение к нему, которое справедливо, когда точки находятся далеко друг от друга (как большинство из вышеперечисленных). У обоих есть параметры, которые вы можете изменить, чтобы выбрать, насколько большими вы хотите сделать точки.
person James A. Bednar    schedule 16.07.2018
comment
Спасибо за ваш ответ! - person BozhiWang; 27.07.2018