python - 在带有 Bokeh serve 的图中使用标签和 openstreetmap
问题描述
我用散景创建了一个图表,并用散景.tile_provider 和CARTODBPOSITRON 添加了openstreetmap。我还向点数据添加了标签,但注意到标签在 openstreetmap 下方消失了。有没有办法在图表中将标签放在“上方”或“上方”?
我试图在没有 openstreetmap 的情况下运行我的代码并且标签是可见的。但是,添加 openstreetmap 后,标签会在地图下方消失。在 f.add_tile(tile_provider) 下方移动 f.add_layout(labels) 似乎不起作用。
from bokeh.tile_providers import get_provider, Vendors
from bokeh.io import curdoc
from bokeh.models import ColumnDataSource, LabelSet, Label
from bokeh.plotting import figure
from bokeh.layouts import column, row, layout
source_o = ColumnDataSource(data=dict(label_o = ["DC-001", "DC-002", "DC-003"],
xdata_o = [461701.3717889148, 461752.3817861293, 461752.9975699731],
ydata_o = [6788398.566150362, 6788377.060072248, 6788376.785602528]))
tile_provider = get_provider(Vendors.CARTODBPOSITRON)
f = figure(x_range=(461820, 461880), y_range=(6788100, 6788600),
x_axis_type="mercator", y_axis_type="mercator",
plot_width=1400,
plot_height=400,
tools="pan,wheel_zoom,reset")
label_f = LabelSet(x='xdata_o', y='ydata_o', text='label_o', source=source_o, level='glyph', x_offset=5, y_offset=5, render_mode='canvas')
f.add_tile(tile_provider)
f.circle(x='xdata_o', y='ydata_o', source=source_o, legend="Locaties DefoCube")
f.add_layout(label_f)
l = layout([f])
curdoc().add_root(l)
我有办法将标签“放在图表的顶部”吗?
解决方案
编辑:实际上我只是注意到您正在更改渲染级别。几乎没有理由这样做。当我删除level="glyph"
并让标签使用标准注释级别(高于所有字形)时,标签会显示在顶部(即使使用render_mode="canvas"
)
这似乎是一个错误。请提交包含所有这些信息的GitHub 问题。同时,设置render_mode='css'
似乎LabelSet
将标签浮动在顶部。
或者,text
字形也可以使用,但没有标签所做的偏移参数:
f.text(x='xdata_o', y='ydata_o', text='label_o', source=source_o)
推荐阅读
- kubernetes - 如何更改现有持久卷的存储类?
- javascript - 我如何让 socket.on 只为“x”数量的输入保持活动状态?
- ansible - 如何在没有用户名/密码的情况下构建 Ansible Playbook
- xaml - 如何在 UWP 中使用 ColorPaletteResources?
- c++ - WinAPI 不妥协的无边框窗口,下方有阴影
- python - Django 在迁移期间要求默认值
- java - 如何获取用户都插入的 sim 卡号?
- jmeter - 如何确定连接错误是由于测试还是主机
- c# - tinyfiledialogs如何将文件保存在俄语命名文件夹中
- asp.net-mvc - 将 ASP.NET Core MVC 部署到 Azure 应用服务 (Linux) 时出现 SQL 连接字符串问题