一种解决方案包括:
-
确保
w
是一个因素
-
那
W
在所有数据帧中具有相同的因子级别
-
使用
drop = FALSE
在里面
scale_colour_discrete
或
scale_colour_manual
.
例如,
w <- c(1, 0, 1, 1, 1, 2)
df1 <- data.frame(u, v, w)
df1$w <- factor(df1$w) # New
p1 <- ggplot(df1, aes(x = u, y = v, color = w )) + geom_point(show.legend = FALSE) +
scale_colour_discrete(drop = FALSE) # New
u <- c(0.9827588, 2.2715139, 1.0160009, -1.0461050, 0.0208908, 2.5948499)
v <- c(1.6068334, 0.7113232, 2.6927960, 3.4466515, 0.7541632, -0.2872779)
w <- c(0, 2, 0, 0, 0, 2) # Switched from 1 to 2
df2 <- data.frame(u, v, w)
df2$w <- factor(df2$w, levels = c("0", "1", "2")) # New
p2 <- ggplot(df2, aes(x = u, y = v, color = w )) + geom_point(show.legend = FALSE) +
scale_colour_discrete(drop = FALSE) # New
grid.arrange(p1, p2)
所以,在下面的图中,对应于2的点是蓝色的,就像上面的图中的单点一样,即使
W
只取下一个的值0和2。