Power BI矩阵视觉对象父类别设置不同颜色的变通方案问询
如何为Power BI矩阵视觉对象的列父类别设置不同背景色?
需求与现状
- 期望效果:让列维度中的父类别(比如Fruits、Vegetables)所在的列组拥有区分度的背景色,方便识别不同类别列的起止边界
- 当前问题:默认矩阵中列维度的父类别没有区分色,当类别下包含大量项目时,很难分辨一个类别结束和另一个类别开始的位置
限制条件
- 常规设置无法实现该需求,需要非常规变通方案
- 必须将类别放在列维度,不能调整到行维度
复现数据
使用以下DAX代码生成测试数据:
DATATABLE ( "Store", STRING, "Category", STRING, "Product", STRING, "Sales", INTEGER, { { "Store 1", "Fruits", "apple", 1 }, { "Store 1", "Fruits", "banana", 1 }, { "Store 1", "Fruits", "cherry", 3 }, { "Store 1", "Vegetables", "pumpkin", 1 }, { "Store 1", "Vegetables", "beet", 1 }, { "Store 1", "Vegetables", "onion", 2 }, { "Store 2", "Fruits", "apple", 3 }, { "Store 2", "Fruits", "banana", 3 }, { "Store 2", "Fruits", "cherry", 1 }, { "Store 2", "Vegetables", "pumpkin", 2 }, { "Store 2", "Vegetables", "beet", 2 }, { "Store 2", "Vegetables", "onion", 3 } } )
非常规变通方案
方案1:条件格式+隐藏计算列
- 添加计算列,给每个类别分配唯一标识:
CategoryColorID = SWITCH( [Category], "Fruits", 1, "Vegetables", 2, 0 )
- 将
CategoryColorID添加到矩阵的列维度,放在Category下方,然后在格式面板中设置该字段为隐藏 - 对矩阵的销售数据区域设置背景色条件格式:基于字段
CategoryColorID,选择"规则"或"渐变颜色",给不同ID分配固定背景色 - 手动匹配列标题的背景色:进入矩阵格式的"单元格元素",为
Category列标题设置对应类别的背景色,和内容区域颜色保持一致
方案2:SVG背景度量值
- 创建DAX度量值生成对应类别的SVG背景:
CategoryBackground = VAR CurrentCategory = SELECTEDVALUE('Table'[Category]) VAR Color = SWITCH( CurrentCategory, "Fruits", "#E8F4F8", "Vegetables", "#F8E8E8", "#FFFFFF" ) RETURN "data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%'><rect width='100%' height='100%' fill='" & Color & "'/></svg>"
- 将该度量值添加到矩阵的"值"区域,设置可视化类型为"图像",调整大小让它填满整个单元格
- 把原始的
Sales度量值放在CategoryBackground上方,设置为"文本",调整位置覆盖在背景上 - 隐藏
CategoryBackground的标题,调整矩阵布局让背景和数据对齐
方案3:第三方自定义视觉对象
- 从Power BI marketplace下载支持列组背景色的第三方矩阵视觉(比如Advanced Matrix)
- 导入后将字段映射到对应维度,在格式面板中找到列组背景色设置项,直接为不同
Category分配颜色
内容的提问来源于stack exchange,提问作者Przemyslaw Remin
相关产品推荐
相关产品推荐

