Qlik Sense中如何实现单字段对应单柱的100%堆叠条形图?
在Qlik Sense中实现按字段分组的100%堆叠条形图
完全可以在Qlik Sense里搞定这个需求!核心是先把你的宽表数据转成适合堆叠图的长表结构,之后就能轻松实现每个问题字段对应一个条形的100%堆叠效果。下面是具体步骤:
第一步:转置数据(脚本层处理)
你当前的数据是宽表格式(每个问题是单独的列),而Qlik的堆叠图需要长表——每行对应一个受访者对单个问题的回答。咱们可以通过脚本转置数据:
// 加载原始数据 Survey1: LOAD * inline [ Respondent, AnswerToQuestion1, AnswerToQuestion2 resp1, 1, 1 resp2, 1, 2 resp3, 2, 1 resp4, 2, 1 resp5, 2, 3 resp6, 2, 1 resp7, 2, 1 resp8, 3, 2 resp9, 3, 2 ]; // 转置第一个问题的数据 TransposedSurvey: LOAD Respondent, 'Question 1' as Question, // 给问题命名,方便前端识别 AnswerToQuestion1 as Answer Resident Survey1; // 追加第二个问题的数据 Concatenate(TransposedSurvey) LOAD Respondent, 'Question 2' as Question, AnswerToQuestion2 as Answer Resident Survey1; // 可选:删除原始宽表,节省内存 Drop Table Survey1;
转置后的数据结构会变成每行对应一个受访者的单条问题回答,这样就适配了Qlik可视化的维度-度量逻辑。
第二步:创建100%堆叠条形图
数据准备好后,就可以在Qlik Sense前端构建图表了:
- 新建一个条形图
- 维度选择
Question(这样每个问题会对应一个独立的条形) - 度量输入以下表达式,计算每个Answer在对应问题中的占比:
记得把度量的格式设置为百分比(在度量属性里调整数字格式)Count(Respondent) / Count(TOTAL <Question> Respondent) - 把
Answer字段拖到颜色区域,这样每个堆叠段会对应不同的Answer值 - 最后在图表的样式选项卡中,把条形图类型切换为100%堆叠条形图
额外提示
如果不想修改脚本,也可以在前端用集合分析或者aggr函数实现,但转置脚本是最直观且性能最优的方式。另外要确保Answer字段被设置为离散维度(而不是连续),这样颜色分组才会正确显示每个Answer的分段。
内容的提问来源于stack exchange,提问作者ZygD
相关产品推荐
相关产品推荐

