亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

散點圖:以交互方式更改圓半徑

散點圖:以交互方式更改圓半徑

繁花不似錦 2021-10-26 13:29:24
我在散景中有一個散點圖,我希望用戶能夠以交互方式使用滑塊更改圖的所有圓圈的輻射。到目前為止,我只能設法做到這一點:from bokeh.plotting import figure, showfrom bokeh.models import CustomJS, Sliderfrom bokeh.layouts import columnimport pandas as pdradius = 0.3source = pd.DataFrame([[1, 2], [3, 5], [3, 4]], columns=['a','b']) p = figure()p.scatter(x='a', y='b', source=source, radius=radius)callback = CustomJS(args=dict(radius=radius), code="""        var radius = cb_obj.get('value');        source.trigger('change');    """)slider = Slider(start=0.1, end=1.0, value=0.3, step=.05, title="Circle-radius", callback=callback)layout = column(p, slider)show(layout)但是當我改變滑塊時圓半徑不會改變。
查看完整描述

1 回答

?
慕運維8079593

TA貢獻1876條經驗 獲得超5個贊

您正在將滑塊的值讀入本地 JavaScript 變量中,但實際上并未將其用于任何用途。要影響字形,您實際上需要設置字形的某些屬性,或更新驅動字形的數據。為此,您可以在dict 中傳遞Bokeh 對象args(像您所做的那樣傳遞純 python 值通常沒有意義)。


此外,該.get語法很久以前就被刪除了,除非您使用的是 Bokeh 的古老版本,否則您應該使用cb_obj.value.


這是一個使用 Bokeh > 1.0 測試的完整示例


from bokeh.plotting import figure, show

from bokeh.models import CustomJS, Slider

from bokeh.layouts import column

import pandas as pd


source = pd.DataFrame([[1, 2], [3, 5], [3, 4]], columns=['a','b'])

p = figure()

r = p.circle(x='a', y='b', source=source, radius=0.3)


callback = CustomJS(args=dict(renderer=r), code="""

    renderer.glyph.radius = cb_obj.value;

""")


slider = Slider(start=0.1, end=1.0, value=0.3, step=.05, title="Circle-radius")

slider.js_on_change('value', callback)


show(column(p, slider))

最后,雖然callbackBokeh 1.x 仍然支持該屬性,但它很快就會被棄用。新代碼應該使用js_on_change上面顯示的一般方法。

http://img1.sycdn.imooc.com//617792540001e67b04680036.jpg

查看完整回答
反對 回復 2021-10-26
  • 1 回答
  • 0 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號