Skip to main content
 首页 » 编程设计

python之散点图上的 Bokeh 图回归线

2025年05月04日19oomusou

我使用 Python 和 Bokeh 在同一图表中生成了两个散点图,并添加了复选框以允许单独查看散点图。

如何使用 Bokeh 为两个散点图(带方程)添加回归线?

output_file("Scatterplot.html") 
 
#scatter plot 
S0 = f.circle(A_area, A_price, 
         fill_alpha=0.3, size=3, color='green') 
S1 = f.circle(B_area, B_price, 
         fill_alpha=0.3, size=3, color='blue') 
 
#widget-checkbox 
checkboxes = CheckboxGroup(labels=["A", "B"], active=[0, 1]) 
callback = CustomJS(code="""S0.visible = false; // same S0 passed in from args 
                            S1.visible = false; 
                            // cb_obj injected in by the callback 
                            if (cb_obj.active.includes(0)){S0.visible = true;} // 0 index box is S0 
                            if (cb_obj.active.includes(1)){S1.visible = true;}""", 
                    args={'S0': S0, 'S1': S1}) 
 
checkboxes.js_on_click(callback) 

请您参考如下方法:

您使用 numpy 计算直线拟合,然后在 Bokeh 中绘制它:

import numpy as np 
from bokeh.plotting import figure 
from bokeh.io import show 
 
#the data 
x=np.array([0,1,2,3,4,5,6,7,8]) 
y=np.array([1,2,3,5,4,6,8,7,9]) 
 
# determine best fit line 
par = np.polyfit(x, y, 1, full=True) 
slope=par[0][0] 
intercept=par[0][1] 
y_predicted = [slope*i + intercept  for i in x] 
 
# plot it 
fig=figure() 
fig.circle(x,y) 
fig.line(x,y_predicted,color='red',legend='y='+str(round(slope,2))+'x+'+str(round(intercept,2))) 
show(fig)