Curdoc()不断添加图,想要替换

时间:2017-01-09 02:59:04

标签: python-2.7 data-visualization bokeh

我编写了一个程序,根据下拉列表中的输入创建图表。我正在使用bokeh中的curdoc()。add_root()来显示我在服务器上的图形,因为show()不起作用。但是,每当我选择一个新选项时,它不会替换当前图形,而是在其下面创建一个。我试过curdoc()。clear()它不起作用。如何在替换图形但不删除下拉列表的情况下使其工作,因为这是curdoc()。clear()正在做什么?这是我的代码:

import csv
import bokeh.plotting
from bokeh.plotting import figure, curdoc
from bokeh.io import output_file, show
from bokeh.layouts import widgetbox
from bokeh.models.widgets import MultiSelect
from bokeh.io import output_file, show, vform
from bokeh.layouts import row

from collections import defaultdict
columns = defaultdict(list) # each value in each column is appended to a list
columns1 = defaultdict(list)
with open('my_data.csv') as f:
        for row in f:
         row = row.strip()# read a row as {column1: value1, column2: value2,...}
         row  = row.split(',')
         columns[row[0]].append(row[1])
         columns[row[0]].append(row[2])
         columns[row[0]].append(row[3])
         columns[row[0]].append(row[4])
         columns[row[0]].append(row[5])

with open('my_data1.csv') as f:
        for row in f:
         row = row.strip()# read a row as {column1: value1, column2: value2,...}
         row  = row.split(',')
         columns1[row[0]].append(row[1])
         columns1[row[0]].append(row[2])
         columns1[row[0]].append(row[3])
         columns1[row[0]].append(row[4])
         columns1[row[0]].append(row[5])
from bokeh.layouts import widgetbox
from bokeh.models.widgets import Dropdown
from bokeh.plotting import curdoc

menu = [("NY", "New York"), ("California", "California"), ("Ohio", "Ohio")]
dropdown = Dropdown(label="Dropdown button", button_type="warning", menu=menu)
count = 0
#def function_to_call(attr, old, new):
    #print dropdown.value



def myfunc(attr, old, new):
    aaa = dropdown.value
    xy = (columns[aaa])
    xy = [float(i) for i in xy]
    myInt = 10000
    xy = [x / myInt for x in xy]
    print xy

    omega = (columns1[aaa])
    omega = [float(i) for i in omega]
    print omega
    import numpy
    corr123 = numpy.corrcoef(omega,xy)
    print corr123
    a = [2004, 2005, 2006, 2007, 2008]
    p = figure(tools="pan,box_zoom,reset,save", title="Diabetes and Stats",
              x_axis_label='Years', y_axis_label='percents')
    # add some renderers
    per = "Diabetes% " + aaa
    p.line(a, omega, legend=per)
    p.circle(a, omega, legend=per, fill_color="white",line_color="green", size=8)
    p.line(a, xy, legend="Per Capita Income/10000")
    p.circle(a, xy, legend="Per Capita Income/10000", fill_color="red", line_color="red", size=8)
    p.legend.location="top_left"
    #bokeh.plotting.reset_output
    #curdoc().clear()
    curdoc().add_root(p)
    curdoc().add_root(dropdown)
    #bokeh.plotting.reset_output

dropdown.on_change('value', myfunc)    
curdoc().add_root(dropdown)

0 个答案:

没有答案