2014-04-28 99 views
2

比方说,我有这样的data.frame聚类点散点图中

df <- data.frame(x = rep(1, 20), y = runif(20, 10, 20)) 

,我想绘制df$ydf$x

由于x值是常数,所以具有相同或接近y值的点将在一个简单的散点图中彼此重叠,这种类型隐藏了这种y值点的密度。这种情况的一个解决方案当然是使用小提琴剧情。

我正在寻找另一种解决方案 - 绘制点集群而不是单个点,因此看起来会类似于泡沫图。然而,在泡沫图中,为了使泡沫有意义,需要第三个维度,这在我的数据中没有。有没有人知道R函数/软件包作为输入点(可能是一个定义的半径),并将它们聚类并绘制它们?

+1

问题的标准“简单”解决方案是使用“抖动” - 为您的数据点添加小的随机值。 –

回答

2

查看sunflowerplot函数(以及用于计算重叠点的函数xyTable)。

您还可以使用TeachingDemos包中的my.symbols函数,结果为xyTable以使用其他形状(图或示例)。

4

可以jitter x值:

plot(jitter(df$x),df$y) 
+0

谢谢。抖动绝对是另一种选择,但如果可能的话,我仍然对群集感兴趣。我认为集群将具有增加剧情不那么繁忙的附加价值。 – user1701545

3

其他标准方法(相对于抖动)是使用部分透明的颜色,以使得重叠点将会出现比“孤独”点变暗。

De gustibus等

3

使用透明度是另一种解决方案。例如: -

ggplot(df, aes(x=x, y=y)) + 
    geom_point(alpha=0.2, size=3) 

当只有一个x值,密度图:

ggplot(df, aes(x=y)) + 
    stat_density(geom="line") 

或小提琴的情节:

ggplot(df, aes(x=x, y=y)) + 
    geom_violin() 

也可能是显示您的数据的选项。