python - 试图在python中用散景绘制鼠标悬停交互式图形
问题描述
我是散景新手并试图绘制图表。我有三个列表说,
from bokeh.plotting import figure, show
x=[1,2,3,4,5,6,7,8,9,10,11]
y=[1,2,1,1,1,1,3,4,5,5,5]
c=[50,40,30,20,10,60,50,40,30,20,10]
p = figure(x_axis_type="datetime", title="Range", plot_height=350, plot_width=800)
p.xgrid.grid_line_color=None
p.ygrid.grid_line_alpha=0.5
p.xaxis.axis_label = 'Time'
p.yaxis.axis_label = 'Value'
p.line(x,y)
show(p)
我想要一种像阶梯函数图这样的时间序列,其中 x 轴是连续的时间序列(列表 x),y 轴是事件(列表 y),即 y 轴应该有标记只有直到 5(如 1,2,3,4,5)和当鼠标指针悬停时绘制的点应该显示存储在 c 中的相应值。
例如,当时间为 x=1 时,y=1,c=50。
这样我就可以通过查看 x 轴知道人在什么时间(在 y 轴上的 5 个位置 1、2、3、4、5 中)并通过放置我的鼠标来知道当时的值是多少(清单 c)。
解决方案
如果您只想在特定点显示工具提示,我会添加圆圈并将它们设置为唯一的悬停渲染器,如下所示:
from bokeh.plotting import figure, show
from bokeh.models import ColumnDataSource, HoverTool
x=[1,2,3,4,5,6,7,8,9,10,11]
y=[1,2,1,1,1,1,3,4,5,5,5]
c=[50,40,30,20,10,60,50,40,30,20,10]
source = ColumnDataSource({'x': x, 'y': y, 'c': c})
p = figure(x_axis_type="datetime", title="Range", plot_height=350, plot_width=800, tooltips = [('time', '@x'), ('place', '@y'), ('value','@c')])
p.xgrid.grid_line_color=None
p.ygrid.grid_line_alpha=0.5
p.xaxis.axis_label = 'Time'
p.yaxis.axis_label = 'Value'
lines = p.line('x','y', source=source)
circles = p.circle('x','y', source=source)
p.select_one(HoverTool).renderers = [circles]
show(p)
推荐阅读
- javascript - 滚动到一个 ID 减去一些像素
- c - 为什么我的窗口每次移动时都不会覆盖它自己?
- list - 如何在 swi prolog 中重复列表?
- ubuntu-16.04 - 我可以在 Ubuntu 16.4 上安装和运行没有任何 GUI 的 chromium 吗?
- c++ - 将 GpuMat 复制到 CUDA 张量
- python-3.x - 十进制到二进制代码的递归函数混淆?
- r - y轴标题上的ggplot第二行不起作用
- php - PHP CURL POST 方法给出 500 响应代码
- python - Fasttext忽略错误的预测?
- flutter - 导航到新页面时保持键盘打开