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

如何让饼图始终以数据总行数为基数显示占比?

解决方案

一、让饼图以总用户数为基数计算占比

核心是锁定分母为全局总用户数(821),避免筛选后用当前视图的用户数作为分母,以下是主流工具的实现方式:

1. Tableau 操作

  • 创建LOD计算字段 总用户数:
    {FIXED : COUNTD([contact id])}
    
    (FIXED级别表达式会忽略所有筛选器,始终返回全量用户的唯一计数)
  • 创建计算字段 科室占比:
    COUNTD([contact id]) / [总用户数]
    
  • 将饼图的度量替换为科室占比,此时无论筛选哪个科室,占比都会以总用户数为分母计算,比如328人会显示为328/821≈39%。

2. Power BI 操作

  • 创建度量值 总用户数:
    CALCULATE(DISTINCTCOUNT('用户数据'[contact id]), ALL('用户数据'))
    
    (ALL函数清除用户数据的筛选上下文,返回全局唯一用户总数)
  • 创建度量值 科室占比:
    DIVIDE(DISTINCTCOUNT('用户数据'[contact id]), [总用户数])
    
  • 饼图使用科室占比作为值字段,筛选目标科室后,占比自动以总用户数为基数计算。

3. 自定义代码(以Python Plotly为例)

  • 提前计算全局总用户数:
    total_users = len(user_data['contact id'].unique())
    
  • 选中目标科室后,计算该科室用户数及占比:
    target_dept = selected_study['科室'].iloc[0]
    target_count = len(user_data[user_data['科室'] == target_dept]['contact id'].unique())
    target_ratio = target_count / total_users
    
  • 构造饼图数据时直接基于总用户数计算,确保占比基数正确。

二、保留所有科室切片并突出目标科室

不要直接筛选掉非目标科室,而是通过颜色分组实现统一其他科室、突出目标的效果:

1. BI工具(Tableau/Power BI)

  • 创建计算字段 科室分组:
    IF [科室] = [当前选中方案的科室] THEN "目标科室" ELSE "其他科室" END
    
    (注:当前选中方案的科室需要通过方案表与用户表的科室关联获取,比如Tableau中用参数或筛选器传递选中方案的科室值)
  • 饼图维度使用原始科室字段,颜色字段使用科室分组:
    • 给"目标科室"设置高饱和的突出颜色(如橙色)
    • 给"其他科室"设置统一的低饱和颜色(如浅灰色)
  • 此时所有科室切片都会保留,非目标科室自动统一颜色,目标科室单独突出,同时占比仍以总用户数为基数。

2. 自定义代码(以Python Plotly为例)

  • 遍历所有科室列表,为每个科室分配颜色:
    all_depts = user_data['科室'].unique().tolist()
    target_dept = selected_study['科室'].iloc[0]
    colors = []
    for dept in all_depts:
        if dept == target_dept:
            colors.append('#ff7f0e')  # 突出颜色
        else:
            colors.append('#cccccc')  # 统一灰色
    
  • 计算每个科室的占比(基于总用户数),绘制饼图时指定colors=colors,即可保留所有切片并区分突出目标科室。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:05:08