Как я могу изменить размер точек на моей карте в 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 входят только бесконечно маленькие точки и бесконечно тонкие линии, которые были бы невидимы, если бы не ненулевая ширина пикселя в изображении. В конечном итоге мы планируем добавить способность точки или линии иметь экстент, но сейчас у вас есть несколько вариантов:
- Уменьшите разрешение вашего изображения, сделав каждый отдельный пиксель более заметным.
- Добавьте "from holoviews.operation.datashader import dynspread" (или "распространение"), а затем используйте растяжение для расширения каждого пикселя в соседние пиксели. Математически, это не то же самое, что иметь ненулевой экстент, но это приближение к нему, которое справедливо, когда точки находятся далеко друг от друга (как большинство из приведенных выше). Оба имеют параметры, которые вы можете изменить, чтобы выбрать, насколько большой вы хотите сделать точки.