小编rad*_*adu的帖子

如何将数据椭圆叠加在ggplot2散点图上?

我有一个R函数,它为散点图产生95%置信度椭圆.输出看起来像这样,每个椭圆(50行)默认为50个点:

           [,1]         [,2]
 [1,]  0.097733810  0.044957994
 [2,]  0.084433494  0.050337990
 [3,]  0.069746783  0.054891438
Run Code Online (Sandbox Code Playgroud)

我想在ggplot2散点图上为每个级别的一个名为'site'的因子叠加一些这样的省略号,由这个命令生成:

> plat1 <- ggplot(mapping=aes(shape=site, size=geom), shape=factor(site)); plat1 + geom_point(aes(x=PC1.1,y=PC2.1))
Run Code Online (Sandbox Code Playgroud)

这是在一个数据集上运行,调用dflat如下所示:

site      geom         PC1.1        PC2.1       PC3.1        PC1.2       PC2.2
1 Buhlen 1259.5649 -0.0387975838 -0.022889782  0.01355317  0.008705276  0.02441577
2 Buhlen  653.6607 -0.0009398704 -0.013076251  0.02898955 -0.001345149  0.03133990
Run Code Online (Sandbox Code Playgroud)

结果很好,但是当我尝试添加椭圆时(假设这个网站叫做"Buhlen"):

> plat1 + geom_point(aes(x=PC1.1,y=PC2.1)) + geom_path(data=subset(dflat, site="Buhlen"),mapping=aes(x=ELLI(PC1.1,PC2.1)[,1],y=ELLI(PC1.1,PC2.1)[,2]))
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息: "Error in data.frame(x = c(0.0977338099339815, 0.0844334944904515, 0.0697467834016782, : arguments imply differing number of rows: 50, 211

我过去曾设法解决这个问题,但我不记得怎么做了.似乎geom_path依赖于相同的点而不是绘制新的点.任何帮助,将不胜感激.

r ellipse scatter-plot ggplot2

21
推荐指数
2
解决办法
2万
查看次数

ggplot2可视化彼此重叠绘制的点数:stat_bin2d或geom_tile或点大小?

我的问题很简单:我有一些带有x,y坐标的点,它们位于由1x1正方形组成的矩形网格内.这些点具有平均坐标,因此几个点被赋予相同的坐标(它们完全重叠).可重复的例子:

# generate fake data
y <- seq(from=0.5, to=9.5, by=1)
x <- seq(from=0.5, to=4.5, by=1)
xnew <- sample(x,100,replace=T)
ynew <- sample(y,100,replace=T)
data <- data.frame(xnew,ynew)

# create chart
ggplot(data, aes(x=xnew, y=ynew)) + geom_point()
Run Code Online (Sandbox Code Playgroud)

我想表示特定位置的点的频率(x,y坐标,表示特定的正方形).stat_bin2d是朝着正确方向迈出的一步,但是这些箱子莫名其妙地(对我而言)放置在地图上的不同位置,这使得难以直观地看到分布.

我可以想象两种不同的解决方案

1)有没有办法将垃圾箱放在点上?有时左下角位于该点,有时是右下角等,如下所示:就像在这里一样

另外,如果盒子足够大以便彼此接触将是理想的,但是当我改变输入binwidth=c(1,1)stat_bin2d(),它实际上改变了计数,尽管箱子不应该重叠,因为所有点彼此相距至少1平方. .

或者,使用磅值:

2)我更喜欢尺寸能反映浓度的点(黑色和白色也会更好).我尝试使用geom_point():

ggplot(data, aes(x=xnew, y=ynew))+geom_point(aes(x=xnew,y=ynew, size=..count..))
Run Code Online (Sandbox Code Playgroud)

但我明白了

Error in eval(expr, envir, enclos) : object 'count' not found
Run Code Online (Sandbox Code Playgroud)

然后,如果我添加`stat ="bin",它与y的赋值冲突.我看了一下:为什么ggplot2不允许我为每个点设置一个大小?,但无法使其工作.

感谢您的期待.

r ggplot2

2
推荐指数
2
解决办法
7199
查看次数

标签 统计

ggplot2 ×2

r ×2

ellipse ×1

scatter-plot ×1