You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Altair实现Pandas列的交互式比例饼图及联动表格?

Altair饼图(带百分比hover)+ 选中联动表格解决方案

以下是完整的实现代码,包含百分比hover提示和饼扇选中联动表格的功能:

import pandas as pd
import altair as alt

# 1. 构造示例数据
data = pd.DataFrame({
    'Root Cause': ['硬件故障', '软件bug', '人为操作', '硬件故障', '软件bug', '硬件故障', '人为操作', '软件bug', '软件bug', '人为操作'],
    'LocationName': ['机房A', '办公区B', '机房A', '办公区C', '机房A', '办公区B', '办公区C', '机房A', '办公区B', '机房A']
})

# 2. 统计根因类别数量与占比
summary = data.groupby('Root Cause').agg(
    count=('Root Cause', 'size')
).reset_index()
summary['percentage'] = (summary['count'] / summary['count'].sum()).round(2) * 100

# 3. 创建选择器(单选,多选可改用selection_multi)
root_cause_selector = alt.selection_single(
    fields=['Root Cause'],
    empty='all',  # 默认显示全部数据
    name='RootCauseSelect'
)

# 4. 绘制饼图(环形图通过innerRadius设置)
pie_chart = alt.Chart(summary).mark_arc(innerRadius=50).encode(
    theta=alt.Theta(field='count', type='quantitative', title='事件数量'),
    color=alt.Color(field='Root Cause', type='nominal', title='根因类型'),
    # hover提示:显示根因、数量、占比
    tooltip=[
        alt.Tooltip('Root Cause', title='根因类型'),
        alt.Tooltip('count', title='事件数量'),
        alt.Tooltip('percentage', title='占比', format='.1f%')
    ]
).add_selection(root_cause_selector)

# 5. 绘制联动表格
detail_table = alt.Chart(data).mark_table(
    # 表格样式可选配置
    header=alt.Header(labelFontWeight='bold'),
    cell=alt.Cell(align='left')
).encode(
    # 选中项高亮,未选中项半透明
    opacity=alt.condition(root_cause_selector, alt.value(1), alt.value(0.2))
).transform_filter(
    # 根据选择器过滤数据
    root_cause_selector
)

# 6. 组合饼图与表格(横向排列)
pie_chart | detail_table

关键功能说明

  • hover显示百分比:提前统计好每个类别的占比字段percentage,在tooltip中直接调用并通过format='.1f%'格式化,确保hover时清晰显示百分比数值。
  • 选中联动表格:
    • 用selection_single创建单选选择器,绑定Root Cause字段;
    • 表格通过transform_filter筛选出选中根因对应的所有原始数据行;
    • 利用opacity条件样式增强交互反馈:选中的行完全不透明,未选中的行半透明,直观区分状态。
  • 环形图调整:通过mark_arc(innerRadius=50)设置内半径,将饼图改为环形图,若要普通饼图去掉innerRadius参数即可。

内容的提问来源于stack exchange,提问作者Ananth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 19:07:09