首页 文章

在ggplot2中指向颜色和刻面

提问于
浏览
3

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)

但这样做使得每个方面只出现一个彩色点:

是否有一个原因?

1 回答

  • 3

    不,它不应该产生相同的结果 . 当您使用变量 zfacet_wrap 时,您将为每个构面面板分割数据,仅绘制属于a,b或c的内容(您的"incorrect"图形) . 通过将 z 重命名为 z2 ,您可以将 facet_wrap 保留为 z 为黑点,但仍会在每个面板中绘制每个彩色点(如 df_sum 中没有 z 将使用的变量 z ) .

相关问题