使用 ggplot2 在 R 中的 grouped/faceted 散点图中定义颜色

Defining Colors in a grouped/faceted scatterplot in R using ggplot2

我是 R 世界的新手,所以请耐心等待 ;-)

在过去的两周里,我一直在使用我的一个旧数据集,试图找出 R 中的一些东西。 你需要了解我的数据来帮助我,我得到了关于不同人的年龄、教育程度、性别和旅行花费的数据。 所以我想用这些数据生成两种图: 首先,我想创建一个散点图,x 轴是年龄,y 轴是花费的钱。然后我想用颜色编码表示学校 type/their 教育的点。

这有点适用于此代码:

scatter <- ggplot(spending.analysis, aes(age, money), na.action=na.exclude)
scatter + 
        geom_point(aes(color = school), alpha = 0.7) +
        geom_smooth(method = "lm", color = "dark blue", alpha = 0.1, fill = "blue")

但不幸的是,它使用了我不太喜欢的 R 的默认颜色,所以我想告诉 R 在学校类型 a 上使用颜色 A,在学校类型 b 上使用颜色 B等等 到目前为止,我无法做到这一点。

实现这一目标的下一个方法是这种方法,但也惨遭失败...

scatter.ns <- subset(spending.analysis, school == "noch in Schulausbildung")
scatter.oa <- subset(spending.analysis, school == "ohne Abschluss")
scatter.hs <- subset(spending.analysis, school == "Hauptschule")
scatter.rs <- subset(spending.analysis, school == "Realschule")
scatter.gym <- subset(spending.analysis, school == "Gymnasium")


scatter2 <- ggplot(scatter.hs, scatter.rs, scatter.gym) +
            geom_point(aes())

我的第二个想法 - 这不是关于真正的分析,它只是玩弄,试图学习和理解 R - 是对情节进行分面,这样我就可以将每种学校类型单独放在一个散点图中。

scatter <- ggplot(spending.analysis, aes(age, money), na.action=na.exclude)
scatter + 
    geom_point(aes(color = school), alpha = 0.7) +
        geom_smooth(method = "lm", color = "dark blue", alpha = 0.1, fill = "blue") +
        facet_grid(. ~ school)

同样,这段代码有点管用,但我仍然不知道如何为每个 plot/school 类型分配我喜欢的颜色。由于某些奇怪的原因,NA 也有一个散点图,这让我很困惑。 有没有办法排除数据被绘制?!基本上我认为踢出第一个和最后一个情节是有道理的。 (见 http://de.tinypic.com/r/2hhkp5l/8

抱歉这么久 post,但作为初学者真的很难,我真的很努力自己弄明白。

非常感谢您的建议 - 请让初学者能够理解 ;-)

您可以通过多种方式实现目标。首先,如果您考虑生成单独的散点图然后合并它们,您可以使用 multiplot function。您只需使用所有设置生成您想要的图表,然后合并它们。

作为第二种方法,您可以在 GGallyggpairs 处生成不同的散点图矩阵(如果这是您所追求的)。

第三,您可以尝试将 groupColors=c('aquamarine3','chartreuse1','goldenrod1') 添加到您的散点图定义中。

最后,您可以选择使用 ggplot themes 之一,您可以在其中定义整个调色板和其他小工具。关于你关于NAs的问题的第二部分,如果你能分享一些数据会更好,但原则上你应该能够尝试一些事情:

ggplot(na.omit(your.data.frame[, c("variable1", "variable2")]), aes(x=variable1,y=variable1))

然后继续定义散点图。

正如我被要求使我的 problem/help 更容易理解的那样,这里是目前有效的代码。出于某种未知原因,它也在策划 NA。但由于我仍在学习而不是使用该数据处理 "real project",所以这没关系,只是一个小问题。

所以这是我的代码:

group.colors <- c("noch in Schulausbildung" = "#D11141" , "ohne Abschluss"  = "#00B159", "Hauptschule" = "#00AEDB", "Realschule" = "#F37735", "Gymnasium" = "#FFC425")
scatter <- ggplot(na.action=na.exclude, spending.analysis, aes(age, money))
scatter + 
        geom_point(aes(color = school), alpha = 0.7) +
        geom_smooth( method = "lm", color = "dark blue", alpha = 0.05, fill = "blue", na.action = na.exclude) +
        facet_grid(. ~ school) +
        theme_bw() +
        scale_color_manual(values = group.colors)

我希望这能帮助其他人解决他们的问题:-)