Python 2.7交互式可视化

时间:2017-01-06 22:11:50

标签: python-2.7 data-visualization interactive bokeh

我是一名新程序员,他有几天试图创建一个下拉列表,其输入然后创建一个图表。 对于我的图表,我使用Bokeh创建了一个html文件图,绘制了一些地方的人均收入以及它的糖尿病百分比。然而,我一直试图让它工作2周,现在有一个下拉列表,我根本无法使其工作。 我可以创建文件,但仅当用户通过键入输入输入时。如何使用从下拉列表中选择位置的人以及显示将图表作为输出的文件来完成此工作。这是我的代码。

编辑: 我希望下拉列表中的选定值作为值aaa发送到程序。我知道我应该把我的图表创建成一个函数的一部分。但是如何将下拉列表的值作为变量aaa?

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

aaa = raw_input("Write State, not Puerto Rico, Hawaii, or DC: ")
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])

xy = (columns[aaa])
xy = [float(i) for i in xy]
myInt = 10000
xy = [x / myInt for x in xy]
print xy

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])
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]
output_file("lines.html")
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"
show(p)

0 个答案:

没有答案