Python

用Tableau画彩虹背景散点图

2019-10-22  本文已影响0人  扫地sir

以前就看到过不少带背景的散点图,但是有些下载下来一看,就是一张做好的背景图片,最近看到一个Viz作品《Scatter Plot Reference Bands》(意思就是“有参考带的散点图”),就完全是利用计算字段画出来的背景带,所以就兴奋地开始研究。下面就给大家分享一下制作过程。

https://public.tableau.com/profile/rajvivan#!/vizhome/WorkoutWednesday36-ScatterPlotReferenceBand/WorkoutWednesday36-ScatterPlotReferenceBand

准备数据集

Player,Adjust Games,Games,PTS,Is Active
Adrian Dantley,955,1230,23177,Inactive Players
Alex English,1193,1230,25613,Inactive Players
Allen Iverson,914,1116,24368,Inactive Players
Antawn Jamison,1083,1264,20042,Inactive Players
Bernard King,874,1312,19655,Inactive Players
Bob Lanier,958,1148,19246,Inactive Players
Bob Pettit,792,836,20880,Inactive Players
Carmelo Anthony,1054,1151,25417,Active Players
Charles Barkley,1073,1280,23757,Inactive Players
Clifford Robinson,1380,1444,19591,Inactive Players
Clyde Drexler,1086,1230,22195,Inactive Players
David Robinson,987,1116,20790,Inactive Players
Dirk Nowitzki,1471,1624,31187,Active Players
Dominique Wilkins,1074,1362,26666,Inactive Players
Dwyane Wade,982,1230,22082,Active Players
Elgin Baylor,846,1117,23133,Inactive Players
Elvin Hayes,1303,1312,27311,Inactive Players
Gary Payton,1335,1362,21813,Inactive Players
George Gervin,791,820,20708,Inactive Players
Hakeem Olajuwon,1238,1444,26946,Inactive Players
Hal Greer,1122,1199,21590,Inactive Players
Jerry West,932,1134,25197,Inactive Players
Joe Johnson,1276,1378,20405,Active Players
John Havlicek,1270,1301,26395,Inactive Players
John Stockton,1504,1526,19711,Inactive Players
Kareem Abdul-Jabbar,1560,1560,38392,Inactive Players
Karl Malone,1476,1476,36928,Inactive Players
Kevin Durant,771,886,20913,Active Players
Kevin Garnett,1462,1559,26071,Inactive Players
Kobe Bryant,1346,1564,33643,Inactive Players
Larry Bird,897,1066,21791,Inactive Players
LeBron James,1143,1214,31038,Active Players
Michael Jordan,1072,1455,32292,Inactive Players
Mitch Richmond,976,1116,20497,Inactive Players
Moses Malone,1329,1558,27405,Inactive Players
Oscar Robertson,1040,1134,26712,Inactive Players
Patrick Ewing,1183,1330,24815,Inactive Players
Pau Gasol,1196,1378,20776,Active Players
Paul Pierce,1343,1510,26397,Inactive Players
Ray Allen,1300,1416,24505,Inactive Players
Reggie Miller,1389,1444,25279,Inactive Players
Robert Parish,1611,1722,23335,Inactive Players
Shaquille ONeal,1207,1526,28596,Inactive Players
Terry Cummings,1183,1444,19462,Inactive Players
Tim Duncan,1392,1510,26496,Inactive Players
Tom Chambers,1107,1312,20049,Inactive Players
Vince Carter,1405,1519,24868,Active Players
Walt Bellamy,1043,1143,20943,Inactive Players
Walter Davis,1033,1230,19521,Inactive Players
Wilt Chamberlain,1045,1127,31417,Inactive Players

数据集很简单,包括NBA球员名称,调整后的出场次数,出场次数(没用上这个字段),总得分,是否退役

下面要用Tableau的并集功能,把数据集复制4次。

用Tableau打开数据集,我这里命名为Data,并拖动到数据源里,然后点击右侧向下的箭头,选中编辑并集,然后再拖动3次Data到编辑面板,这时会出现4个Data数据集,最后点击一下“应用”按钮,就会出现下图的Data,Data1,Data2,Data3。

这时,数据集已经从原有的50行扩充到200行,并多出了Table Name字段,来区分Data-Data3。

这里就要说一下,为什么要复制4份数据?因为这里画的背景带其实是个三角形。画一个封闭的三角形需要4个点,点1和4在原点重合,2和3在最右侧,请参考下图:

创建计算字段

取每组的下线,加INT是取整,保证每组的范围都是整数

这个字段就确定了各组的取值范围,比如用默认参数5,Band就是10-14,15-19,20-24,25-29,30-34这几个组

CASE [Table Name]
WHEN "Data" THEN 1
WHEN "Data1" THEN 2
WHEN "Data2" THEN 3
WHEN "Data3" THEN 4
END

这个字段就用到了我们上面做的并集,把并集改成可以1-4,以便确定画三角形时候的路径

CASE [Dot]
WHEN 1 THEN 0
WHEN 2 THEN 1700        
WHEN 3 THEN 1700
WHEN 4 THEN 0
END

这里用1700,是因为Adjust Games的最大值是1611,实际应用中也可以写计算字段算一下最大值,或者用参数,这里就偷懒了。

[X]*
CASE [Dot]
WHEN 1 THEN [Low Band]
WHEN 2 THEN [Low Band]
WHEN 3 THEN [Low Band]+[Band Size]-0.1
WHEN 4 THEN [Low Band]+[Band Size]-0.1
END

这里减去0.1是为了各背景带之间有个空白间隔,其实不减也没问题,用颜色里的边界也有同样的效果,大家可以自己尝试。

开始画图

这要强调一定要用最小值,原因大家自行研究。

这里左侧的X=0这列的圆点是没有意义的,但是我也没有找到方法去掉,原Viz作品也是保留的,只是通过固定轴,不显示这些圆点

今天的分享就到这里,这里只是简单介绍一下方法,大家可以下载原Viz作品继续深入研究。

此篇文章已发布到我的公众号:saodisir,有兴趣也可关注一下

上一篇 下一篇

猜你喜欢

热点阅读