Hadley Wickham的“ ggplot2:用于数据分析的优雅图形”一书在第7章中提供了此示例图,其中z的所有三种颜色的均值出现在每个面上:
这是本书提供的用于制作图形的代码:
df <- data.frame(
x = rnorm(120, c(0, 2, 4)),
y = rnorm(120, c(1, 2, 1)),
z = letters[1:3]
)
df_sum <- df %>%
group_by(z) %>%
summarise(x = mean(x), y = mean(y)) %>%
rename(z2 = z)
ggplot(df, aes(x, y)) +
geom_point() +
geom_point(data = df_sum, aes(colour = z2), size = 4) +
facet_wrap(~z)
理想情况下,将颜色名称保留为z而不是将其重命名为z2应该会产生相同的结果:
df_sum <- df %>%
group_by(z) %>%
summarise(x = mean(x), y = mean(y))
df_sum <- df %>%
group_by(z) %>%
summarise(x = mean(x), y = mean(y))
ggplot(df, aes(x, y)) +
geom_point() +
geom_point(data = df_sum, aes(colour = z), size = 4) +
facet_wrap(~z)
但是这样做可以使每个面上只有一个彩色点:
这有原因吗?
答案 0 :(得分:3)
否,它不应产生相同的结果。当您通过变量facet_wrap
使用z
时,将拆分每个构面面板的数据,仅绘制属于a,b或c的内容(“不正确”图)。通过将z
重命名为z2
,您可以将facet_wrap
保留为z
的黑点,但仍在每个面板中绘制每个有色点(如df_sum
不是z
会使用的变量facet_wrap
。