Изменить внешний вид точек на карте на svg Pandas / Bokeh

Я здесь новенький. Я хотел бы знать, каковы возможности изменения внешнего вида точек в Bokeh или других библиотеках, позволяющих создавать информационные панели с картами (у меня есть значок в SVG). Я хочу изменить значок для переменной my_hover.tooltips = [('SIEC', '@siec')] ,

Я попытался запустить Bokeh со строкой HoverTool на графике. Но я не знаю, как это изменить на карте.

Это пример того, что я хочу

 from bokeh.plotting import figure, show, output_file from bokeh.tile_providers import CARTODBPOSITRON from bokeh.io import show, output_file from bokeh.models import Plot, Range1d, MultiLine, Circle, HoverTool, TapTool, BoxSelectTool from bokeh.models.graphs import from_networkx, NodesAndLinkedEdges, EdgesAndLinkedNodes from bokeh.palettes import Spectral4 from bokeh.models import ColumnDataSource, CDSView, GroupFilter palette = itertools.cycle(sns.color_palette()) colors = itertools.cycle(palette) lista_kolorow = [ "#000000", "#FFFF00", "#1CE6FF", "#FF34FF", "#FF4A46", "#008941", "#006FA6", "#A30059", "#FFDBE5", "#7A4900", "#0000A6", "#63FFAC", "#B79762", "#004D43", "#8FB0FF", "#997D87", "#5A0007", "#809693", "#FEFFE6", "#1B4400", "#4FC601", "#3B5DFF", "#4A3B53", "#FF2F80", "#61615A", "#BA0900", "#6B7900", "#00C2A0", "#FFAA92", "#FF90C9", "#B903AA", "#D16100", "#DDEFFF", "#000035", "#7B4F4B", "#A1C299", "#300018", "#0AA6D8", "#013349", "#00846F", "#372101", "#FFB500", "#C2FFED", "#A079BF", "#CC0744", "#C0B9B2", "#C2FF99", "#001E09", "#00489C", "#6F0062", "#0CBD66", "#EEC3FF", "#456D75", "#B77B68", "#7A87A1", "#788D66", "#885578", "#FAD09F", "#FF8A9A", "#D157A0", "#BEC459", "#456648", "#0086ED", "#886F4C", "#34362D", "#B4A8BD", "#00A6AA", "#452C2C", "#636375", "#A3C8C9", "#FF913F", "#938A81", "#575329", "#00FECF", "#B05B6F", "#8CD0FF", "#3B9700", "#04F757", "#C8A1A1", "#1E6E00", "#7900D7", "#A77500", "#6367A9", "#A05837", "#6B002C", "#772600", "#D790FF", "#9B9700", "#549E79", "#FFF69F", "#201625", "#72418F", "#BC23FF", "#99ADC0", "#3A2465", "#922329", "#5B4534", "#FDE8DC", "#404E55", "#0089A3", "#CB7E98", "#A4E804", "#324E72", "#6A3A4C" ] ## tworzenie mapy output_file("tile.html") source = ColumnDataSource( data=dict(lat=result['LATITUDE'].tolist(), lon=result['LONGITUDE'].tolist(), merkor_x=result['merkor_x'].tolist(), merkor_y=result['merkor_y'].tolist(), siec=result['SIEC'].tolist(), adres=result['ADRES_CZYSTY'].tolist())) dict_source = {} for i in np.arange(0,len(result['SIEC'].unique())): dict_source["source_" + result['SIEC'].unique()[i]] = ColumnDataSource( data=dict(lat=result[result["SIEC"]== result['SIEC'].unique()[i]]['LATITUDE'].tolist(), lon=result[result["SIEC"]== result['SIEC'].unique()[i]]['LONGITUDE'].tolist(), merkor_x=result[result["SIEC"]== result['SIEC'].unique()[i]]['merkor_x'].tolist(), merkor_y=result[result["SIEC"]== result['SIEC'].unique()[i]]['merkor_y'].tolist(), siec=result[result["SIEC"]== result['SIEC'].unique()[i]]['SIEC'].tolist(), adres=result[result["SIEC"]== result['SIEC'].unique()[i]]['ADRES_CZYSTY'].tolist())) dict_view = {} for i in np.arange(0,len(result['SIEC'].unique())): dict_view[result['SIEC'].unique()[i]+ '_view'] = CDSView(source=list(dict_source.values())[i]) common_figure_kwargs = { 'plot_width': 1800, 'plot_height' : 1500, 'x_axis_label': 'Points' } dict_common_circle_kwargs = {} for i in np.arange(0,len(result['SIEC'].unique())): dict_common_circle_kwargs["common_circle_kwargs_" + result['SIEC'].unique()[i]] = { 'x': 'merkor_x', 'y': 'merkor_y', 'source': list(dict_source.values())[i], 'size': 3, 'alpha': 0.7} dict_common_shop_kwargs = {} for i in np.arange(0,len(result['SIEC'].unique())): dict_common_shop_kwargs["common_" + result['SIEC'].unique()[i] +"_kwargs"] = { 'view': list(dict_view.values())[i], 'color': lista_kolorow[i], 'legend': result['SIEC'].unique()[i]} mapa = figure(**common_figure_kwargs, x_range=(1558321.476598351, 2694056.6889853813), y_range=(6274531.544317098, 7331682.201156591), x_axis_type="mercator", y_axis_type="mercator") mapa.add_tile(CARTODBPOSITRON) for i in np.arange(0,len(result['SIEC'].unique())): mapa.circle(**list(dict_common_circle_kwargs.values())[i], **list(dict_common_shop_kwargs.values())[i]) mapa.legend.click_policy = 'hide' mapa.xaxis.axis_label = 'SZEROKOSC' mapa.yaxis.axis_label = 'DLUGOSC' mapa.legend.location = "top_left" my_hover = HoverTool() my_hover.tooltips = [('SIEC', '@siec'), ('SZEROKOŚĆ', '@lat'), ('DŁUGOŚĆ', '@lon'), ('ADRES', '@adres')] mapa.add_tools(my_hover) 

У меня нет никаких сообщений об ошибках, я просто не знаю, как это сделать ...

Всего 1 ответ


Если вы хотите заменить точки на карте изображениями, вы можете использовать image_url как в этом примере (Bokeh v1.1.0):

from bokeh.plotting import figure, show

p = figure(name = 'Doggys', x_range = (2, 18), y_range = (-10, 10))
p.image_url(url = ['https://cdn3.iconfinder.com/data/icons/line/36/dog_head-512.png'], x = [10], y = [0], w = [5], h = [5])
p.image_url(url = ['https://cdn3.iconfinder.com/data/icons/dogs-outline/100/dog-02-512.png'], x = [5], y = [5], w = [5], h = [5])

show(p)

введите описание изображения здесь


Есть идеи?

10000