2017-04-25 228 views
0

我正在制作一个多散点图来显示交互。我从reshape2包使用的熔体功能,使我的数据是这样的:配色方案在ggplot2 facet_wrap

head(wage) 
    money educ exper tenure nonwhite female married numdep smsa Region Industry 
1 3.10 11  2  0 White Female Notmarried  2 1 west other 
2 3.24 12 22  2 White Female Married  3 1 west services 
3 3.00 11  2  0 White Male Notmarried  2 0 west trade 
4 6.00 8 44  28 White Male Married  0 1 west clerocc 
5 5.30 12  7  2 White Male Married  1 0 west other 
6 8.75 16  9  8 White Male Married  0 1 west profserv 


test1 = wage %>% select(money, educ, female, nonwhite, married, smsa, Region, Industry) 
test1a = melt(test1, id.vars= c('money', 'educ')) 

head(test1a) 

     money educ variable value 
    1 3.10 11 female Female 
    2 3.24 12 female Female 
    3 3.00 11 female Male 
    4 6.00 8 female Male 
    5 5.30 12 female Male 
    6 8.75 16 female Male 

tail(test1a) 
     money educ variable value 
    3151 5.65 12 Industry construc 
    3152 15.00 16 Industry profserv 
    3153 2.27 10 Industry trade 
    3154 4.67 15 Industry construc 
    3155 11.56 16 Industry nondur 
    3156 3.50 14 Industry profserv 

我使用的ggplot功能是:

ggplot(test1a, aes(educ,money, col = value)) + geom_point()+ 
    facet_wrap(~ variable) + geom_smooth(method = 'lm', se = FALSE) + 
    theme(legend.position="none") 

这是给我下面的情节: Plot

这正是我正在寻找的东西,除了我想要所有6个地块有相同的配色方案。换句话说,我希望所有6个地块都具有与左上角相同的完全绿色/黄色阴谋。

有什么建议吗?

+0

看起来你在'variable'和'value'列中有多种度量类型。例如,你至少在这些专栏中有性别和行业。如果您在融化前向我们展示了一个数据样本(将dput(data_sample)'的输出粘贴到您的问题中),并告诉您使用“变量”和“值”实际表示的内容,我们可以帮助您塑造数据正常。 – eipi10

+0

@ eipi10感谢您的建议,我添加了更多的代码。 – user53558

+0

基本上我只是不喜欢配色方案,因为它很难看到。我想要做的另一件事是让每个点都变成黑色,但每个回归都有不同的颜色?只是为了使这些交互更容易看到。 – user53558

回答

0

我生成一些数据,以说明此答案

test1a <- data.frame(money = rnorm(10), educ = rnorm(10), 
        variable = c("female","female","female","female","female","Industry","Industry","Industry","Industry","Industry"), 
        value = c("Female", "Female", "Male", "Male", "Female", "construc", "construc", "trade", "trade", "trade")) 

     money   educ variable value 
1 0.6509500 0.822198786 female Female 
2 -0.7038793 0.257554982 female Female 
3 -0.9110664 -1.048976078 female  Male 
4 0.1313963 -1.398813412 female  Male 
5 -0.6050824 0.818251963 female Female 
6 1.2937046 -0.289675281 Industry construc 
7 1.1670726 -0.004767622 Industry construc 
8 0.3489473 -0.633061650 Industry trade 
9 -0.1536924 -0.567433569 Industry trade 
10 1.3932668 -0.010446676 Industry trade 

库中使用的所有的

library(ggplot2) 
library(dplyr) 

首先获得正在使用的可变值的表

uniqueVarVal <- unique(test1a[,3:4]) 

    variable value 
1 female Female 
3 female  Male 
6 Industry construc 
8 Industry trade 

目的是为女性变量获取手动色标并使用相同计划为行业变量。

要使用的颜色。我只指定了2,,您将需要更多颜色,因为您的一些变量的值超过2。

colors <- c("red", "green") 

添加颜色要使用我们的变量值

colValues <- uniqueVarVal %>% 
    group_by(variable) %>% 
    mutate(color = colors[row_number()]) %>% 
    ungroup() 

# A tibble: 4 × 3 
    variable value color 
    <fctr> <fctr> <chr> 
1 female Female red 
2 female  Male green 
3 Industry construc red 
4 Industry trade green 

接下来,我们需要设置变量的值水平的表,否则ggplot按字母顺序排列它们。

test1a$value <- factor(test1a$value, levels = colValues$value) 

最后使用重复模式红绿色指定手动色标。

ggplot(test1a, aes(educ,money, col = value)) + 
    geom_point(alpha = 0.3) + 
    geom_smooth(method = 'lm', se = FALSE) + 
    scale_color_manual(values = colValues$color) + 
    facet_wrap(~ variable) 

我已经留下了图例显示,所以你可以看到发生了什么。

鉴于你的积分密度,我建议使用alpha来设置透明度。 enter image description here

+0

你是英雄。谢谢。 – user53558

+0

不客气。如果这对你有用,你会将答案标记为已接受并给予你赞成。谢谢 –