使用散景创建条形图

时间:2020-01-29 07:26:52

标签: python bokeh

bokeh网站上有一个示例:

https://docs.bokeh.org/en/latest/docs/gallery/bar_nested.html

但是在我的Jupiter笔记本电脑上不起作用。

我有以下数据框:

                precision   recall  f1
Random Forest   0.493759    1.0     0.661096
XGBoost         0.493759    1.0     0.661096

我想构建一个图表,以比较这三个指标上的两个模型。 但首先,我只想比较一个指标。这是我的无效代码:

from bokeh.io import show, output_file
from bokeh.models import ColumnDataSource, FactorRange
from bokeh.plotting import figure

data = pd.DataFrame({'precision':[percision_rf,percision_xgb],'recall':[recall_rf,recall_xgb],'f1':[f1_rf,f1_xgb]})
data.rename({0:'Random Forest',1:'XGBoost'}, inplace=True)

source = ColumnDataSource(data=data)

p = figure()

p.vbar(x='Random Forest', top=0.9, width=0.9, source=source)

p.y_range.start = 0
p.x_range.range_padding = 0.1
p.xaxis.major_label_orientation = 1
p.xgrid.grid_line_color = None

show(p) 

在bokeh网站上有一个简单条形图的示例,但它没有使用ColumnDataSource。

1 个答案:

答案 0 :(得分:0)

当您将if(window.matchMedia("(pointer: coarse)").matches) { // touchscreen } 传递给DataFrame时,Bokeh使CDS列超出DataFrame的列。您可以在字形方法中引用那些,然后该字形将为该列的所有值绘制字形。例如,在上面的示例中,您可以

ColumnDataSource

所有散景字形都以这种方式固有地“矢量化”。

在上面的代码中,# plot bars for every precision value along the x axis p.vbar(x='precision', top=0.9, width=0.9, source=source) 传递给x='Random Forest'没有意义,因为vbar中没有列(因此CDS中没有列),称为“随机森林“。