【发布时间】:2020-06-12 22:17:54
【问题描述】:
我正在同一个图上的相关矩阵中绘制相关系数r 和样本大小n(上三角中的r,下三角中的n)。通常我对 ggplot2 在绘图之前删除我的 NA 没有任何问题,但在这种情况下,它只是删除 NA 值 some 的时间,我不知道为什么。我正在使用 ggplot2 的 3.2.1 版本。
一个示例数据框:
library(ggplot2)
library(dplyr)
ex <- data.frame(x1 = c(rep("2010", 3), rep("2011", 3), rep("2012", 3)),
x2 = rep(c("2010", "2011", "2012"), 3),
r = c(NA, 0.5, 0.2, NA, NA, 0.1, NA, NA, NA),
n = c(NA, NA, NA, 25, NA, NA, 70, 50, NA))
当我运行这个图表时,以尺寸为美学,NAs 会自动从两个几何图形中删除:
ex %>%
ggplot(aes(x1, x2))+
geom_point(aes(size = r))+
geom_text(aes(label = n))
但是,当我运行这个图表时,以颜色作为审美,NAs 只从geom_text 中删除,而不是geom_point:
ex %>%
ggplot(aes(x1, x2))+
geom_point(aes(color = r), size = 6)+
geom_text(aes(label = n))
此stackoverflow question 不适用,因为我确实不想要过滤掉行。我还尝试将x1、x2 和r 更改为基于this 的字符,但它也不起作用
ex %>%
ggplot(aes(as.character(x1), as.character(x2)))+
geom_point(aes(color = as.character(r)), size = 6, na.rm = T) +
geom_text(aes(label = n))
有没有办法让色彩美学忽略 NA?
【问题讨论】:
-
这两个几何图形不一定具有相同的美学。他们继承了最初的
ggplot调用中的任何内容,然后他们知道您在geom_text或geom_point中分配的内容,但他们彼此之间不交谈。因此,如果 r 是 NA 但 n 不是,那只会影响这一点,反之亦然。一些问题是没有明确的替代方案:对于颜色,将缺失值设为灰色是有意义的,但您希望 NA 的大小是多少? -
顺便说一句,您可以使用来自
rep的each参数,如下所示:rep(2010:2012, each = 3)