用Tableau画复合象形图
2023-02-13 本文已影响0人
扫地sir
本文中的复合象形图(Compound Pictogram)源自WOW2018第15周的一个挑战(https://workout-wednesday.com/week-15/)。这个图表的制作难度并不高,如下图所示,它类似于堆叠的华夫饼图,其中每一个圆点代表一个产品,圆点越多说明该类别下的产品类型越多。
我们使用中文超市数据完成图表的制作,导入数据后,先创建一个参数“每行个数”,类型为整数,方便图表的调节。
然后,新建计算字段:
- X轴:(INDEX()-1)%[每行个数]
- 行数:INT((INDEX()-1)/[每行个数])
这两个字段与制作华夫饼图创建的字段完全一致,主要是计算每个点在X轴和Y轴上的位置。但是,这里Y轴的位置由于不同组块间有偏移,还需要进行改造,不能直接使用。
所以,还需要新建计算字段:
- 分组:INT([行数]/[每行个数])
- Y轴:[行数]+[分组]
通过“分组”字段区分出不同的组块,然后根据“分组”的不同对“行数”进行偏移,才能得到“Y轴”的正确位置。
首先,将标记类型改为“圆”,把“产品名称”字段拖到详细信息栏,“分组”字段拖到颜色栏,表计算依据选择“产品名称”。
然后,将“子类别”和“X轴”字段拖到列功能区,“Y轴”字段拖到行功能区,“X轴”和“Y轴”的表计算依据也选择“产品名称”。
通过以上操作,就可以得到下图所示的图表。
不过,图表中还缺少产品个数的明确信息,我们可以创建一个计算字段,算出产品个数并添加到表头里。
- 表头标签:"(" + STR({FIXED [子类别] : COUNTD([产品名称])}) + " 款产品)"
这是一个复合计算,通过LOD计算出产品个数,为了显示的美观增加了文字和括号。将这个计算字段拖到列功能区,就可以基本完成图表的制作。
另外,本期挑战中还有一个难度较高的图表挑战,这个改进版并不是将子类别和数量放置在表头,而是依据产品个数的大小将标签放置在对应位置。有兴趣的同学可以自己研究一下,考验你对表计算和双轴的掌握程度。