首页 > 解决方案 > 如何使用 Legend 作为复选框在 python 中绘图?

问题描述

我一直在尝试绘制一个具有 3 列数据框的图表。一是“小时”,二是卢比的“金额”,三是“机器码”。我需要分析一台机器每小时进行的交易量。共有 67 个唯一的机器码。请在此处查看数据示例

这些是我一直在使用的库

import numpy as np
from bokeh.io import output_notebook, show
from bokeh.layouts import row
from bokeh.palettes import Viridis3
from bokeh.plotting import figure
from bokeh.models import CheckboxGroup, CustomJS

output_notebook()
p = figure()
props = dict(line_width=4, line_alpha=0.7)
x = sl['Hour']
y = sl['amount']

现在我附加了一个带有所有机器代码的列表标签[]

labels = []
active1 = []
for s in sl['machinecode'].unique():
    labels.append(s)
    active1.append(0)

我基本上想为所有这些机器代码创建复选框,用户在检查任何机器代码时都会绘制图表。如果用户再次检查另一个机器代码,该机器代码的行将附加到图表中,以便我可以在机器之间进行比较。

j =0
for i in sl['machinecode'].unique():

      l = p.line(x, y, color=Viridis3[0], legend="Line:" , **props)
      j=j+1


checkbox = CheckboxGroup(labels=labels,
                     active=active1, width=100)
checkbox.callback = CustomJS(args=dict(l=l, checkbox=checkbox),
                          code="""
  l0.visible = 0 in checkbox.active;
  l1.visible = 1 in checkbox.active;
  l2.visible = 2 in checkbox.active;
  """"")

layout = row(checkbox, p)
show(layout)

上面的代码显示了一些真正不同的东西,请在这里查看图表实际显示的内容,它为每台机器绘制了单一颜色,复选框实际上并没有命令图表

标签: python-3.xdata-visualizationjupyterbokehdata-analysis

解决方案


推荐阅读