这是我的代码:
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()
,结果看起来像: enter image description here 但我想要更大的点数,像这样: enter image description here
如何为目标更改代码? 谢谢!
答案 0 :(得分:0)
(从并行的Github问题https://github.com/ioam/holoviews/issues/2877#issuecomment-405158027复制。)
到目前为止,数据着色器仅包含无限小的点和无限的细线,如果不是图像中像素的非零宽度,则它们将不可见。我们计划最终要添加点或线具有范围的功能,但是目前,您有两种选择:
答案 1 :(得分:0)
正如James A. Bednar回答的那样,使用 dynspread()可以使数据阴影散点图中的点变大。
您的代码应如下所示:
from holoviews.operation.datashader import datashade, dynspread
dynspread(datashade(your_holoviews_scatterplot))
这可确保数据阴影散点图中的点在屏幕上占据更多像素。
dynspread()具有一些影响标记大小的参数,另请参见:
Documentation on dynspread()
例如,您可以更改阈值参数以获得更大的标记,尽管它不会使绘图更漂亮。阈值可以保存0到1之间的值。阈值是一个调整参数,值越大,散布越多。
dynspread(datashade(your_holoviews_scatterplot), threshold=1.0)