第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

切換散景服務(wù) hbar 圖的數(shù)據(jù)源不起作用:空白圖

切換散景服務(wù) hbar 圖的數(shù)據(jù)源不起作用:空白圖

楊魅力 2023-10-31 21:28:01
問題我想創(chuàng)建一個交互式 hbar 圖,您可以使用選擇小部件、Python 回調(diào)和本地散景服務(wù)在 3 個不同的數(shù)據(jù)源之間切換。使用默認(rèn)源的繪圖渲染得很好,但是當(dāng)我切換到不同的源時,y 標(biāo)簽保持不變,并且繪圖變?yōu)榭瞻?。更改回選擇小部件上的原始值不會顯示我開始時的繪圖并保持空白。當(dāng)我將初始源硬編碼為代碼中的另一個源時,它呈現(xiàn)得很好,直到我再次使用小部件切換它,因此數(shù)據(jù)本身似乎單獨(dú)工作得很好。我錯過了什么嗎?我閱讀了許多線程、文檔和教程,但找不到我的代碼有任何問題。這是我到目前為止所做的:我讀取 .csv 并創(chuàng)建 3 個單獨(dú)的數(shù)據(jù)幀,然后轉(zhuǎn)換為列數(shù)據(jù)源。每個源都有 10 個數(shù)據(jù)條目,其中包含“species”、“ci_lower”和“ci_upper”列。以下是一個來源的示例(所有三個來源的構(gòu)建方式完全相同,具有不同的分類單元類別):df = pd.read_csv(os.path.join(os.path.dirname(__file__), "AZA_MLE_Jul2018_utf8.csv",), encoding='utf-8')m_df = df[df["taxon_class"]=="Mammalia"]m_df = m_df.sort_values(by="mle", ascending=False)m_df = m_df.reset_index(drop=True)m_df = m_df.head(10)m_df = m_df.sort_values(by="species", ascending=False)m_df = m_df.reset_index(drop=True)m_source = bp.ColumnDataSource(m_df)我將所有 3 個來源保存在一個字典中:sources_dict={    "Mammalia": m_source,    "Aves": a_source,    "Reptilia": r_source}...然后創(chuàng)建了名為“source”的變量,該變量應(yīng)與默認(rèn)的“Mammalia”源交互更改:source = sources_dict["Mammalia"]接下來,我創(chuàng)建了一個圖形并添加了帶有源變量的 hbar 圖,如下所示:plot = bp.figure(x_range=(0, np.amax(source.data["ci_upper"])+5), y_range=source.data["species"])plot.hbar(y="species", right="ci_lower", left="ci_upper", height=0.5, fill_color="#b3de69", source=source)然后我添加了帶有 python 回調(diào)的選擇小部件:def select_handler(attr, old, new):    source.data["species"]=sources_dict[new].data["species"]    source.data["ci_lower"]=sources_dict[new].data["ci_lower"]    source.data["ci_upper"]=sources_dict[new].data["ci_upper"]select = Select(title="Taxonomic Class:", value="Mammalia", options=list(sources_dict.keys()))select.on_change("value", select_handler)curdoc().add_root(bk.layouts.row(plot, select))我試過這個:我懷疑錯誤出在回調(diào)函數(shù)中,因此我嘗試了許多不同的變體,但都得到了相同的錯誤結(jié)果。我將在這里列出其中一些:我嘗試使用 python 本機(jī)字典:new_data= {        'species': sources_dict[new].data["species"],        'ci_lower': sources_dict[new].data["ci_lower"],        'ci_upper': sources_dict[new].data["ci_upper"]    }    source.data=new_data
查看完整描述

1 回答

?
阿波羅的戰(zhàn)車

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個贊

在評論中回答您的問題,更改data不會更改范圍,因?yàn)閥_range=some_thing這只是為了方便創(chuàng)建在幕后完成的適當(dāng)范圍類。


以下是您可以手動執(zhí)行此操作的方法。請注意,我根本不碰x_range- 默認(rèn)情況下它會DataRange1d自動計算其開始/結(jié)束值。


from bokeh.io import curdoc

from bokeh.layouts import column

from bokeh.models import Select, ColumnDataSource

from bokeh.plotting import figure


d1 = dict(x=[0, 1], y=['a', 'b'])

d2 = dict(x=[8, 9], y=['x', 'y'])

ds = ColumnDataSource(d1)



def get_factors(data):

    return sorted(set(data['y']))



p = figure(y_range=get_factors(d1))

p.circle(x='x', y='y', source=ds)


s = Select(options=['1', '2'], value='1')



def update(attr, old, new):

    if new == '1':

        ds.data = d1

    else:

        ds.data = d2

    p.y_range.factors = get_factors(ds.data)



s.on_change('value', update)


curdoc().add_root(column(p, s))


查看完整回答
反對 回復(fù) 2023-10-31
  • 1 回答
  • 0 關(guān)注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號