为了账号安全,请及时绑定邮箱和手机立即绑定

在散景条形图中制作一个迭代学术术语的滑块

在散景条形图中制作一个迭代学术术语的滑块

哆啦的时光机 2022-05-19 16:09:08
我正在按学期制作历史成绩直方图。我想制作一个带有滑块的交互式散景条形图,该滑块可以循环浏览这些术语。我的条形图在单个术语上工作,但是当我尝试添加其他术语时,我无法让条形图选择单个术语,然后进行更新并略过它。我真的只需要一些帮助来让 groupby 对象只选择一个术语。import osfrom bokeh.plotting import figure, ColumnDataSourcefrom bokeh.io import curdoc, output_file, showfrom bokeh.layouts import widgetboxfrom bokeh.models import Sliderfrom bokeh.transform import jitterfrom bokeh.palettes import viridisfrom 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 = 0p.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' 方法。我需要有某种方法让它选择一个术语,以便他们可以创建一个跟随滑块并更新术语的更新功能。除此之外,我什至不确定我是否可以在滑块上循环遍历非数字值,但一个好的第一步是能够完全分割组。感谢您的任何帮助,您可以提供。
查看完整描述

2 回答

?
FFIVE

TA贡献1797条经验 获得超6个赞

我认为您应该描述您的数据,而不清楚主要问题是什么。这是熊猫的问题,而不是散景的问题,但是,我遇到了类似的问题,但我无法理解您的数据问题。我解决的方法(就我而言)是使用 pandas 函数 Grouper,然后应用平均值。例如,ColumnDataSource 允许我使用 .loc 函数。



查看完整回答
反对 回复 2022-05-19
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

我终于通过在 GroupBy 对象上使用 .get_group 方法解决了这个问题!



查看完整回答
反对 回复 2022-05-19
  • 2 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信