在 Jupyter/Python 中使用 bokeh 绘制交互式饼图

2023-12-09

我是 Bokeh 的新手,我非常感谢一些帮助来了解如何使用 Bokeh 在 Jupyer/Python 中绘制简单的交互式饼图。我计划在 Bokeh 中使用“带有 Python 函数的 CustomJS”,如页面底部所述here。饼图由两个条目组成,其中一个滑块可以更改 (v1+v2) 圆形内的一个饼图“v2”的形状。我尝试按照散景网站中的示例进行操作,该示例显示了与正弦图的交互性,但我只是无法让它与我的饼图一起使用。任何帮助将不胜感激。下面是我在 Jupyter 笔记本中使用的代码块。

import numpy as np
import matplotlib.pyplot as plt
from bokeh.layouts import column
from bokeh.models import CustomJS, ColumnDataSource, Slider
from bokeh.plotting import Figure, output_file, show, output_notebook
from bokeh.charts import Donut, show

#output_file('donut.html')
output_notebook()

v1=1
v2=.2
import pandas as pd
data = pd.Series([v1,v2], index = list('ab')) 
plot = Figure(plot_width=400, plot_height=400)
plot = Donut(data) 
    
    
def pie_chart(source=data,window=None,deltav=None):
    data = source.data
    v2 = deltav.value
    #v2 = data['v2']
    source.trigger('change')
    
slider = Slider(start=.1, end=1., value=.2, step=.1, title="delta-V", callback=CustomJS.from_py_func(pie_chart))
callback.args["deltav"] = slider
    
l = column(slider, plot)
show(l)

如果您想以交互方式更新内容,那么最好使用bokeh.plotting API。由于一些相当无趣的技术原因,bokeh.chartsAPI(包括Donut)不太适合需要就地更新内容的用例。

With bokeh.plotting有一个wedge字形法您可以使用它来绘制饼图。这是一个完整的示例(使用 Bokeh0.12.5)用滑块更新饼图:

from math import pi

from bokeh.io import output_file, show
from bokeh.layouts import column
from bokeh.models import ColumnDataSource, CustomJS, Slider
from bokeh.plotting import figure

output_file("pie.html")

source = ColumnDataSource(data=dict(
    start=[0, 0.2], end=[0.2, 2*pi], color=['firebrick', 'navy']
))

plot = figure()
plot.wedge(x=0, y=0, start_angle='start', end_angle='end', radius=1,
        color='color', alpha=0.6, source=source)

slider = Slider(start=.1, end=1., value=.2, step=.1, title="delta-V")

def update(source=source, slider=slider, window=None):
    data = source.data
    data['end'][0] = slider.value
    source.trigger('change')

slider.js_on_change('value', CustomJS.from_py_func(update))

show(column(slider, plot))

enter image description here

它比Donut版本,但是python端和JS端的数据结构之间的关系更加清晰和直接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Jupyter/Python 中使用 bokeh 绘制交互式饼图 的相关文章

  • 使用 Python 2.7 和 MySQLdb 将二进制数据插入 MySQL 中的 blob 列时如何避免编码警告

    我在将二进制数据插入到longblob使用 Python 2 7 中的 MySQLdb 在 MySQL 中的列 但我收到一个编码警告 我不知道如何解决 test py 11 Warning Invalid utf8 character st
  • 使用 python/scapy 迭代 pcap 文件数据包

    我想使用 python scapy 迭代 pcap 文件包 该文件有多个协议 当前迭代是特定于协议的 因此如果下一个数据包来自另一个协议 则迭代会 跳转 我不知道为什么现在会变成这样 我想要一个数据包一个数据包 无论什么协议 小例子 dat
  • Paramiko - 使用私钥连接 - 不是有效的 OPENSSH 私钥/公钥文件

    我正在尝试找到解决方案 但无法理解我做错了什么 在我的 Linux 服务器上 我运行了以下命令 ssh keygen t rsa 这产生了一个id rsa and id rsa pub file 然后我将它们复制到本地并尝试运行以下代码 s
  • 在 matplotlib 中使用一组标量值对球体表面着色

    我对 matplotlib 相当陌生 这也是我的第一个问题 我试图代表脑电图记录的头皮表面电位 到目前为止 我已经有了一个球体投影的二维图形 它是使用轮廓生成的 并且几乎可以归结为普通的热图 有什么方法可以在半个球体上完成此操作吗 即生成一
  • 查找给定节点的最高权重边

    我在 NetworkX 中有一个有向图 边缘的权重从 0 到 1 表示它们发生的概率 网络连通性非常高 所以我想修剪每个节点的边缘 只保留最高概率的节点 我不确定如何迭代每个节点并仅保留最高权重in edges在图中 有没有一个networ
  • Django modelForm 中的文件上传

    我正在尝试在 appengine django 中上传文档 使用纯 django 代码成功上传文档 使用 python manage py runsever 但是当我尝试使用 appengine 项目运行 django 时 它给了我错误 E
  • Python Flask 是否定义了路由顺序?

    在我看来 我的设置类似于以下内容 app route test def test app route
  • 如何停止 dbus gobject 循环

    我试图阻止gobject MainLoop 几秒钟后 我不知道是否可以为这种循环设置超时 这将是完美的 但我还没有找到 因此 我尝试通过线程来解决这个问题 但不幸的是 主循环阻塞了其他线程 这是我的代码 我正在使用 python 2 7 i
  • 在新式类中替换 __str__ [重复]

    这个问题在这里已经有答案了 我正在转换旧的 Python 代码 并用新样式的类替换一些类 问题是这破坏了替换的行为 str 我不知道为什么 class OldStyle def str self return original old Ol
  • 在 Python 中在运行时将方法分配给对象

    我正在尝试在 Python 中执行与 Javascript 相同的操作 a new func function arg1 arg2 var diff arg1 arg2 return diff diff 现在 我这样做的方法是首先定义方法
  • 检查给定字符串中是否存在回车符

    我正在从文件中读取一些行 并检查每行是否具有 Windows 类型的 CRLF 如果任何行中缺少 n 或 r 则必须报告错误 我尝试使用下面的代码 即使该行没有 r 它也不会报告任何错误 Open file open File Name r
  • Pandas HD5-查询,其中表达式失败

    我想查询 HDF5 文件 我愿意 df to hdf pfad df format table 将数据帧写入光盘 为了阅读我使用 hdf pandas HDFStore pfad 我有一个列表 其中包含numpy datetime64值称为
  • JupyterLab - 将命令子集添加到侧边栏选项卡

    我有一些 Jupyter Notebook 调整的经验 但没有 JupyterLab 的经验 基本上 我想将命令子集添加到侧选项卡 假设我已在标题 DTLA 下注册了命令 sample function addCommands app Ju
  • 使用 Spotipy 设置 Spotify 凭据

    我正在尝试在我的 mac 10 10 上预装 python 2 7 10 来使用 Spotipy 特别是 add a saved track py 1 这是从 github 复制的代码 Add tracks to Your Collecti
  • Bokeh,条形图和折线图的组合

    我试图在散景内的条形图顶部绘制一条线 我努力了 p1 figure p1 renderer append Bar p1 renderer append Line show p1 到目前为止我还没有运气 可以使用 Bokeh 将两个或多个图形
  • 如何配置散景图以具有响应宽度和固定高度

    我使用通过组件功能嵌入的散景 实际上我使用 plot sizing mode scale width 它根据宽度进行缩放并保持纵横比 但我想要一个响应宽度但固定或最大高度 这怎么可能实现呢 有stretch both and scale b
  • 在Python中清理属于不同语言的文本

    我有一个文本集合 其中的句子要么完全是英语 印地语或马拉地语 每个句子附加的 id 为 0 1 2 分别代表文本的语言 无论任何语言的文本都可能有 HTML 标签 标点符号等 我可以使用下面的代码清理英语句子 import HTMLPars
  • Keras Model.fit 详细格式

    我在 Jupyter Notebook 中运行 Keras model fit 如果 verbose 设置为 1 输出会非常混乱 Train on 6400 samples validate on 800 samples Epoch 1 2
  • PhotoImage 实例没有属性“调整大小”

    我收到错误 PhotoImage 实例没有属性 调整大小 尽管多个在线资源声称这是使用 PIL 调整图像大小的方法 有任何想法吗 相关代码 Deathwing ImageTk PhotoImage Image open Deathwing
  • 在 Haskell 中等待然后检测按键的简单方法是什么?

    我对 Haskell 还很陌生 所以我正在寻找一种简单的方法来检测按键 而不是使用getLine 如果有人知道任何库 或者知道一些这样做的技巧 那就太好了 如果有更好的地方可以问这个问题 请直接告诉我 我将不胜感激 如果您不想阻止 可以使用

随机推荐