散景python回调以突出显示选择/重制数据源

时间:2018-12-18 17:11:30

标签: bokeh

我刚刚开始了解Bokeh,还无法找到我要完成的工作的直接示例。

这是我到目前为止所拥有的:

from bokeh.plotting import figure, curdoc, show, output_file
from bokeh.models import ColumnDataSource
from bokeh.layouts import column, row
from bokeh.io import curdoc
import pandas as pd
import numpy as np

#Point data.
df = pd.DataFrame(np.random.randint(0,10,size=(5, 2)), columns=list('XY'),
                  index=['A','B','C','D','E'])

#Line data.
def linecoordinates(ar):
    return [i+ar for i in range(0,5)]
Ldf=pd.DataFrame()
Ldf["Xs"]=df['X'].apply(lambda p: linecoordinates(p))
Ldf["Ys"]=df['Y'].apply(lambda p: linecoordinates(p))


#Plotting points.
pointchart=figure(plot_width=500, plot_height=500, tools='lasso_select',
                  title="Point scatter")
pointchart_source= ColumnDataSource(df)
pointchart.circle("X","Y",source=pointchart_source)


#1. A way to plot the lines.
Lchart1=figure(plot_width=500, plot_height=500, title="By iterating through DF rows")
for r in Ldf.index:
    Lchart1.line(Ldf.loc[r,"Xs"], Ldf.loc[r,"Ys"])


#2. Can't use stored arrays as source.
Lchart2=figure(plot_width=500, plot_height=500, title="Can't get arrays from source")
Lchart2_source= ColumnDataSource(Ldf)
Lchart2.line("Xs", "Ys", source= Lchart2_source)



layout= row(pointchart,Lchart1, Lchart2)
show(layout)



#bokeh serve --show TestApp.py

我正在尝试执行以下操作:

  1. 为折线图创建数据源,该数据源将具有source通常提供的常用交互功能。在上面的代码示例中,我可以通过遍历pandas数据框将X / Y坐标列表传递到图表来制作折线图。代码的最后一部分显示了无法使用的折线图,因为我可能没有正确地将坐标列表传递给折线图。

  2. 我想演示如何通过对点图上的点进行套索选择来使用Python回调突出显示折线图上的线。点和线数据源将具有相同的索引。

  3. 我想演示如何使用Python回调从点图的套索选择中填充折线图。散点中的点与预先生成的线数据具有相同的索引。

谢谢您的帮助

1 个答案:

答案 0 :(得分:0)

这不能回答有关如何从%Z传递列表以绘制线条的问题,但是可能还有另一种更好的方法。这是一个从上方完成第2点和第3点的示例。

ColumnDataSource