我有这个情节:
mtcars$mpg_level <- as.character(as.integer(mtcars$mpg))
p1 <- ggplot(data = mtcars, aes(x = disp, y = mpg_level, color=mpg_level , shape=mpg_level)) + geom_point()
p1 <- p1 + scale_shape_manual(values = 1:length(unique(mtcars$mpg_level)))
我想为mpg
和disp
之间的相关性添加一个标签
这不起作用:
p2 <- ggplot(data = mtcars, aes(x = disp, y = mpg_level, color=mpg_level , shape=mpg_level)) + geom_point()
p2 <- p2 + stat_cor(aes(label = ..rr.label..), color = "red", geom = "label", digits = 2, size = 3)
p2 <- p2 + scale_shape_manual(values = 1:length(unique(mtcars$mpg_level)))
给出:
Warning message:
Computation failed in `stat_cor()`
Caused by error in `cor.test.default()`:
! not enough finite observations
所以我怀疑它试图获得mpg_level
的每个级别之间的相关性,这是由以下工作支持的:
p3 <- ggplot(data = mtcars, aes(x = disp, y = mpg)) + geom_point()
p3 <- p3 + stat_cor(aes(label = ..rr.label..), color = "red", geom = "label", digits = 2, size = 3)
我觉得它应该是这样的,我把mpg
和disp
分别加到stat_cor
中,但显然不起作用:
p4 <- ggplot(data = mtcars, aes(x = disp, y = mpg_level, color=mpg_level , shape=mpg_level)) + geom_point()
p4 <- p4 + stat_cor(aes(x=disp, y=mpg, label = ..rr.label..), color = "red", geom = "label", digits = 2, size = 3)
p4 <- p4 + scale_shape_manual(values = 1:length(unique(mtcars$mpg_level)))
1条答案
按热度按时间1l5u6lss1#
问题是你的数据是按
mpg_level
分组的。要通过stat_cor
获得你想要的相关性,你必须额外设置group
aes来覆盖默认分组,即添加group=1
。然而,虽然这是有效的,并且给出了所需的相关性,但标签被放置在
mpg
处,而不是mpg_level
处。要解决这个问题,您必须显式地设置标签位置。注意:当然,这也可以通过将
mpg
Map到y
上来避免。