- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试更新 Bokeh 中的 ColorBar,但标题和颜色本身都不会更新。这是一个最小的功能示例(Python 3.6.9、Bokeh 2.3.0、Tornado 6.1):
from bokeh.plotting import figure, curdoc
from bokeh.colors import HSL
from bokeh.layouts import column
from bokeh.models import ColumnDataSource, LinearColorMapper, ColorBar, Select
import numpy as np
def colorize(data,reverse=False):
if reverse:
return [HSL(h-180,1.0,0.5).to_rgb() for h in data]
else:
return [HSL(h,1.0,0.5).to_rgb() for h in data]
def update(attr,old,new):
if menu.value == 'reverse':
y = -1 * x
c = colorize(x,reverse=True)
else:
y = 1 * x
c = colorize(x)
source.data = {'x':x,'y':y,'c':c}
#updateColorBar(p.right[0])
updateColorBar(p._property_values['right'][0])
def updateColorBar(cb):
if menu.value == 'reverse':
cb.title = 'reverse'
u = colorize(np.linspace(0,360,101,endpoint=True),
reverse=True)
else:
cb.title = 'normal'
u = colorize(np.linspace(0,360,101,endpoint=True))
newcm = LinearColorMapper(palette=u,low=0.0,high=2*np.pi)
cb.color_mapper.palette = newcm.palette
cb.color_mapper.low = newcm.low
cb.color_mapper.high = newcm.high
# prepare some data
x = np.linspace(0,360,361,endpoint=True)
y = x
c = colorize(x)
source = ColumnDataSource({'x':x,'y':y,'c':c})
# create a new plot with a title and axis labels
p = figure(title="Simple scatter example", x_axis_label="x",
y_axis_label="y",toolbar_location="above")
# create a plot to show the colors
p.scatter('x', 'y',size=2,color='c',source=source)
u = colorize(np.linspace(0,360,101,endpoint=True))
color_mapper = LinearColorMapper(palette=u,low=0.0,high=2*np.pi)
color_bar = ColorBar(color_mapper=color_mapper,
label_standoff=12,
title='normal')
p.add_layout(color_bar, 'right')
menu = Select(title='Order',value='normal',
options=['normal','reverse'])
menu.on_change('value',update)
t = column(children=[menu,p])
# show the results
curdoc().add_root(t)
我正在使用 bokeh serve --show file_name.py
运行这个示例。
当我从菜单中选择“反向”时,绘图本身会正确更新,但 ColorBar 没有变化。我关注了advice here尽可能做出最小的改变,但也许我的改变太小了?我的猜测是 LinearColorMapper 不会将更新推送到 ColorBar,但更改 ColorBar 上的标题也不起作用。
编辑:通过将 print(cbar.title)
添加到更新方法的末尾,我可以看到颜色条的标题正在更新。当我从菜单中选择这两个项目时,它从“正常”变为“反向”并再次变回。看起来 ColorBar 根本没有被重绘。
编辑2:如果我尝试完全替换 ColorBar,它就会消失。修改update函数,新增一个创建ColorBar:
def update(attr,old,new):
if new == 'reverse':
y = 360 - 1 * x
c = colorize(x,reverse=True)
else:
y = 1 * x
c = colorize(x)
source.data = {'x':x,'y':y,'c':c}
cbar = p.right[0]
#updateColorBar(cbar,new)
p.right[0] = makeColorBar()
print(p.right[0].visible)
def makeColorBar():
if menu.value == 'reverse':
title = 'reverse'
u = colorize(np.linspace(0,360,101,endpoint=True),True)
else:
title = 'normal'
u = colorize(np.linspace(0,360,101,endpoint=True))
cm = LinearColorMapper(palette=u,low=0.0,high=2*np.pi)
return ColorBar(color_mapper=cm,label_standoff=12,
title=title)
当我以不同的方式运行时,使用 python3 -i file_name.py
并询问 p.right[0]
的身份,我得到 ColorBar (id='1042', ...)
。如果我随后手动更改 menu.value = 'reverse'
(True 打印到屏幕上)并查看 ColorBar 的标识,我得到 ColorBar(id='1057', ... )
。看起来新的颜色条没有被推送到显示器,而旧的颜色条正在被删除。
Edit3:这是marked as a bug在 Bokeh 中,计划更新到版本 2.3.2。
最佳答案
这个错误 has been closed , 它看起来像是 version 3.0 的一部分.
关于python - 在 Bokeh 中更新 ColorBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66876346/
我用 bokeh.plotting.Figure.line 画了下面的图。我如何添加垂直引用线来强调 Feb/14 的一个点? 这是另一个情节。这是 bokeh.charts.Bar。我想添加水平指南
我使用 python 在 Bokeh 中创建了一个散点图。我想创建一个小部件,允许用户更改散点图中点的颜色。有没有简单的方法可以做到这一点?我找到了一个基于 JQuery 的颜色选择器小部件 ( ht
我有一个 bokeh 应用程序,我可以在其中读取各种文件(6 到 12 个)并生成 DataTable 来比较几个不同的变量。 所以我有一个生成 DataTable 的循环,将它们添加到列表中,然后最
典型的 Bokeh 散点图可能如下所示: 其中 x 和 y 限制均为 [0,1]。如何删除轴上 0 之前并延伸到 1 之外的额外空间?这样最终图的左角为坐标 (0,0),左上角和右下角分别为 (0,1
我正在尝试创建一个 Bokeh 图,它允许我通过单击复选框来切换图中线条的可见性。 我开始尝试对复选框组使用 js 回调,但不幸的是,实际上并没有为复选框组实现 js 回调。 任何人都可以提出另一种方
例如,我有 button = Button(label="0", type="success") 选择此按钮后,我想将标签更改为“1”,反之亦然。有没有简单的方法来实现这一目标? 编辑: RadioB
我团队中的一些人,包括我自己,发现在 Bokeh 散点图中使用 circle 非常令人迷惑。方法,对于图中数据的初始自动缩放拟合,我们可以为我们的数据拨入合理的大小,例如使用 plot.circle(
所以我想做的是一个带有线条和圆圈的简单图形 http://docs.bokeh.org/en/latest/docs/quickstart.html#getting-started 但带有在鼠标悬停在
考虑一个垂直堆积条形图,其中每一列都由多个条形(段)组成。是否可以在每个段上添加工具提示?目前,相同的工具提示附加到组成该列的所有段。 from bokeh.core.properties impor
In[21]: from bokeh.charts import Bar, output_file, show In[22]: dict = {'sec': {u'A': 10, u'B': 20}}
在 Bokeh 中实现树形图需要什么?类似于这个 DS 示例的东西会很好—— http://bl.ocks.org/robschmuecker/7880033 我只是想可视化一个数据结构,所以只需要平
我了解如何指定在 Bokeh 中显示的特定刻度,但我的问题是是否有一种方法可以分配特定的标签来显示与位置。例如 plot.xaxis[0].ticker=FixedTicker(ticks=[0,1]
有什么方法可以为图例添加标题,例如左侧为当前图例,右侧为带有标题的图例。这个特殊的图例被放置在情节之外,所以我不知道是否可以用文本字形来伪造它。 最佳答案 从最新版本的 Bokeh (1.2) 开始,
问题:我的 python 应用程序启动了一个 Bokeh 服务器,如本文所述: http://matthewrocklin.com/blog/work/2017/06/28/simple-bokeh-
我正在使用 Bokeh 图制作折线图,我想标记实际的点(用线穿过它们),而不是仅仅标记线本身。我怎样才能做到这一点?我浏览了文档和用户指南,但似乎找不到答案。谢谢! 最佳答案 假设您正在使用 boke
我将一个 Bokeh Figure 实例作为输入传递给另一个函数,我需要在那里修改它的源代码。 不知道该怎么做! 这就是我创建图形实例的方式: source = ColumnDataSource({'
据我所知,我可以通过设置 responsive=True 来使 Bokeh 图响应 div 的宽度。然而,我感兴趣的是让 Bokeh 图只在一定程度上做出响应。有没有一种方法可以让我设置 Bokeh
我有一个 Bokeh 服务器应用程序。我想在命令行上传递自定义选项: bokeh serve /path/to/script.py --my-option foo 这可能吗? Bokeh 会以某种方式
我有一个图,它使用来自一些原始数据的值(在 0-20 的 x/y 范围内),以及一些导致一些相当大的 x/y 值(例如 -1000 到 1000+)的最小化数据。因此,我所做的绘图需要我手动单击缩放以
在Web应用程序中,我想让用户使用bokeh的漂亮的框/套索选择工具来选择绘制图像中的感兴趣区域。我想接收选定的像素,以便在python中进行进一步的操作。 对于散点图,这类似于gallery,很容易
我是一名优秀的程序员,十分优秀!