在散点图中聚类点

时间:2014-04-28 18:27:45

标签: r scatter-plot

我们说我有data.frame

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

我希望将df$ydf$x进行对比。

由于x值是常数,具有相同或接近y值的点将在简单的散点图中彼此重叠绘制,这种点在这样的y值处隐藏点的密度。对于这种情况的一种解决方案当然是使用小提琴情节。

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

5 个答案:

答案 0 :(得分:4)

您可以jitter x值:

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

答案 1 :(得分:3)

您可以使用hexplot库或ggplot2中的stat_binhex尝试使用hexplot。

http://cran.r-project.org/web/packages/hexbin/

http://docs.ggplot2.org/0.9.3/stat_binhex.html

答案 2 :(得分:3)

另一种标准方法(与抖动相比)是使用部分透明的颜色,因此重叠点将显得比“孤独”点更暗。

De gustibus等。

答案 3 :(得分:3)

使用透明度是另一种解决方案。 E.g:

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()

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

答案 4 :(得分:2)

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

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