- 已编辑
貌似twitter上很火的图,把本叠在一块的分布活活的变成一了条条山脉,视觉效果挺好
貌似twitter上很火的图,把本叠在一块的分布活活的变成一了条条山脉,视觉效果挺好
0.0 厉害了...
涛妹,怎么实现的?
真是酷炫
cloud_wei 涛妹的标题里已经说了,ggjoy 包。只不过没给 CRAN 链接而已:https://cran.rstudio.com/package=ggjoy
更多背景知识参见:http://blog.revolutionanalytics.com/2017/07/joyplots.html
一定是我太愚钝了……这个图想说明什么问题……
xuening 涛妹给的这幅图我不知道数据是什么,所以我也不知道是咩意思;但这种图形的优势在于能显示很多条曲线,非常节省空间(多条曲线堆叠)。举个栗子,比如你想可视化1900到2000年百年间每一年的所有电影时长的密度分布,每一条线都对应某一年的电影时长分布,你会发现,早年间的电影时长集中在10分钟、20分钟附近(数字都是我瞎编的),而到了90年代,电影时长开始向2小时附近聚集。这种左右推移的波浪线很有艺术效果,也能很快说明问题。
这种图的缺陷也来自于它的优势:堆叠。因为有堆叠,所以一定会有下面的线挡住上面的线的情况,信息展示不完整。但这也不是大问题,因为我们看密度曲线,通常最关心的是密度的波峰,波峰通常不容易被挡住,所以一眼看去,很容易知道密度聚集的位置随着另一个变量(如时间)的变化。
我觉得这个图很炫, 但找个足够有意思的数据就有点难了....
要有横纵坐标的差异, 再比较分布才有意义...(拿着图找数据有点揪心)
我给出作者的github主页 https://github.com/clauswilke/ggjoy
xuening 雪姨犀利!你说的一点也没有错,把密度曲线替换为简单的散点图或者箱线图基本上都能表达同样的信息。问题有二:
如果是散点图,则需要考虑点的重叠问题(overplotting),拿电影时长来说,可能大多数电影都在2小时附近,这样会有很多点聚集在同一个坐标处,导致看不出来那里到底有多少部电影;解决办法可以是把点随机稍微扰动位置(jitter),或者换成蜂窝图(hexbin)。如果是箱线图,当箱子太多的时候,每个箱子只能被压得很扁,也许几乎会变成一条线,可能会看不清上下四分位数和中位数在哪里;而且箱线图的概括度太高,如果是双峰或多峰的分布,箱线图就表现不出来了,密度曲线则没有这个问题。
此处应该 @ 闫晗,但我不知道她是否有论坛账号。应该让她写文章的时候同时试一下散点图和箱线图,你去跟她讲一下,召唤她来批折子。
dawei_lang 拿图找数据的确是逆行,有些揪心。也就是传说中的拿锤子找钉子。
高涛师兄放的图怎么实现的坐标轴label 在中间?
我发现包里的example例子(如下)坐标轴名称都跑到最边上了,困扰,应该咋把他们居中呢?求助。。
yihui 关于怎么减弱overplotting,多元时间序列里面的horizon plot (http://timelyportfolio.blogspot.com/2012/06/horizon-plot-already-available.html) 的想法是设置透明度,把山峰的头分级消掉,然后放在山体的肚子里。。。但貌似对直方图这么做就失去其直观性了。