Deneb PowerBI人口金字塔:设置轴domainMax为男女数据集最大值
优化PowerBI Deneb人口金字塔的轴域最大值设置
当前你通过汇总男女全部数据定义domainMax,可改为取所有男/女性年龄组的最大聚合值,提升图表空间利用率。以下是修改后的配置:
{ "data": {"name": "dataset"}, "transform": [ { "calculate": "datum.Geschlecht == 'männlich' ? 'männlich' : 'weiblich'", "as": "gender" }, // 按性别+年龄组分组,计算每组的人口数 { "aggregate": [ {"op": "sum", "field": "KPI-Set Display", "as": "GroupTotal"} ], "groupby": ["gender", "Altersgruppe", "Sortierung"] }, // 提取所有分组中的最大值作为全局轴域上限 { "joinaggregate": [ {"op": "max", "field": "GroupTotal", "as": "MaxVal"} ] } ], "spacing": 0, "hconcat": [ { "transform": [ {"filter": {"field": "gender", "equal": "weiblich"}} ], "title": "", "mark": {"type": "bar", "tooltip": true}, "encoding": { "y": { "field": "Altersgruppe", "axis": null, "sort": {"field": "Sortierung", "order": "descending"} }, "x": { "field": "GroupTotal", "title": "weiblich & unbekannt", "scale": {"domainMax": {"expr": "data('data_0')[0].MaxVal"}}, "axis": {"format": "s"}, "sort": "descending" } } }, { "width": 20, "view": {"stroke": null}, "mark": {"type": "text", "align": "center"}, "encoding": { "y": { "field": "Altersgruppe", "type": "ordinal", "axis": null, "sort": {"field": "Sortierung", "order": "descending"} }, "text": {"field": "Altersgruppe", "type": "nominal"} } }, { "transform": [ {"filter": {"field": "gender", "equal": "männlich"}} ], "title": "", "mark": {"type": "bar", "tooltip": true}, "encoding": { "y": { "field": "Altersgruppe", "axis": null, "sort": {"field": "Sortierung", "order": "descending"} }, "x": { "field": "GroupTotal", "title": "männlich", "scale": {"domainMax": {"expr": "data('data_0')[0].MaxVal"}}, "axis": {"format": "s"}, "sort": "ascending" } } } ] }
修改说明
- 提前分组聚合:新增
aggregate步骤,按gender和Altersgruppe(年龄组)分组计算每组的人口总数,避免子图表重复聚合计算。 - 取全局最大分组值:通过
joinaggregate提取所有分组中的最大值MaxVal,替代原来的全部数据总和,确保轴域上限匹配实际最长条形的长度。 - 简化子图表编码:子图表的x轴直接使用提前计算好的
GroupTotal字段,无需再次聚合,提升性能。
这样设置后,图表的x轴会自动适配男女年龄组中的最大人口数,让条形长度充分利用显示空间,避免因轴域过大导致图表内容过于紧凑。
内容的提问来源于stack exchange,提问作者NaHolla
相关产品推荐
相关产品推荐

