我刚刚开始了解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
我正在尝试执行以下操作:
为折线图创建数据源,该数据源将具有source
通常提供的常用交互功能。在上面的代码示例中,我可以通过遍历pandas数据框将X / Y坐标列表传递到图表来制作折线图。代码的最后一部分显示了无法使用的折线图,因为我可能没有正确地将坐标列表传递给折线图。
我想演示如何通过对点图上的点进行套索选择来使用Python回调突出显示折线图上的线。点和线数据源将具有相同的索引。
我想演示如何使用Python回调从点图的套索选择中填充折线图。散点中的点与预先生成的线数据具有相同的索引。
谢谢您的帮助
答案 0 :(得分:0)
这不能回答有关如何从%Z
传递列表以绘制线条的问题,但是可能还有另一种更好的方法。这是一个从上方完成第2点和第3点的示例。
ColumnDataSource