使用Bokeh下拉菜单可以创建不同的图表

时间:2018-06-08 10:59:22

标签: python visualization bokeh

我正在尝试为我的工作创建一个下拉界面。我的数据集看起来像这样,它是一个随机数据集

enter image description here

现在我想在这里说CNN和BBC的2个下拉菜单。从下拉列表中选择一个频道后,我想选择一个根据它的值产生条形图的主题。

我最初只想访问一个值,但它给了我一个空白图。

from bokeh.plotting import figure

from bokeh.io import output_notebook,show,output_file

p=figure()

import csv
data = [row for row in csv.reader(open('C:/Users/Aishwarya/Documents/books/books_q4/crowd_computing/Bokeh-Python-Visualization-master/interactive/data/data.csv', 'r',encoding="utf8"))]

p.vbar(x=data[1][2], width=0.5, bottom=0,
            top=data[1][1], color="firebrick")

#output_notebook()
output_file('1.html')

show(p)

1 个答案:

答案 0 :(得分:0)

可能存在两个问题:

  • 首先,如果您在轴上使用分类坐标,例如" CNN"它似乎是你希望使用的,那么你需要将Bokeh改为分类范围:

    p.figure(x_range=["CNN", ...]) # list all the factors for x_range
    

    如果您以后需要更新轴,可以直接更新范围:

    p.x_range.factors = [...]
    
  • 此外,自Bokeh 0.13.0起,目前存在一个问题,即阻止"单身"作为坐标工作的因素:#6660 Coordinates should accept single categorical values。结果是您必须将数据放入Bokeh ColumnDataSource explicityl(始终是一个选项),或者在这种情况下,解决方法也只是传递单项列表:

    p.vbar(x=["cnn"], ...)
    

以下是您的代码的完整更新,其中包含一些虚假数据:

from bokeh.plotting import figure
from bokeh.io import show

p = figure(x_range=["cnn"])

p.vbar(x=["cnn"], width=0.5, bottom=0, top=10, color="firebrick")

show(p)

enter image description here

我还建议您阅读用户指南部分Handling Categorical Data