我正在按学期制作历史成绩直方图。
我想制作一个带有滑块的交互式散景条形图,该滑块可以循环浏览这些术语。
我的条形图在单个术语上工作,但是当我尝试添加其他术语时,我无法让条形图选择单个术语,然后进行更新并略过它。
我真的只需要一些帮助来让 groupby 对象只选择一个术语。
import os
from bokeh.plotting import figure, ColumnDataSource
from bokeh.io import curdoc, output_file, show
from bokeh.layouts import widgetbox
from bokeh.models import Slider
from bokeh.transform import jitter
from bokeh.palettes import viridis
from bokeh.transform import factor_cmap
导入必要的模块。
input_file = 'Alltime_grades.csv'
output_file('Grades.html')
df = pd.read_csv(input_file)
group = df.groupby(['Term','Grade'])
这是输入文件导入代码。输入文件有 3 列 - “Term”、“Grade”和“Grade_Count”。
所以说 2019 年春季 - A - 5000
即使该领域仍然存在,我也没有按学期分组,我让这个工作在一个学期内完成。
Grades = ['A', 'A-', 'B+', 'B', 'B-', 'C+', 'C', 'C-', 'D+', 'D', 'D-', 'F']
上面,我制作了一个成绩列表,以便它们以正确的顺序显示
source = ColumnDataSource(group)
grade_cmap = factor_cmap('Grade',palette=viridis(22) , factors=Grades)
###
p = figure(plot_height=500, plot_width=700, title='Grades Over Time', toolbar_location=None, tools="", x_range = Grades)
###
p.vbar(x='Grade', top='grade_count_max', width=.75, bottom=0, source=source, line_color=grade_cmap, fill_color=grade_cmap)
p.y_range.start = 0
p.xaxis.axis_label = 'Grade'
p.yaxis.axis_label = 'Count of Grade'
curdoc().add_root(p)
show(p)
以上是我用来制作单个条形图显示的代码。
source = ColumnDataSource(data={
'x' : group.loc['Spring 2019'].Grade,
'top' : group.loc['Spring 2019'].grade_count_max)})
对于多个术语,我尝试将其作为列数据源。
所以现在我不能在 Group by 上使用 'loc' 方法。
我需要有某种方法让它选择一个术语,以便他们可以创建一个跟随滑块并更新术语的更新功能。
除此之外,我什至不确定我是否可以在滑块上循环遍历非数字值,但一个好的第一步是能够完全分割组。
感谢您的任何帮助,您可以提供。
FFIVE
慕妹3146593
相关分类