2015-10-27 31 views
1

我有一个数据集有2个因素(MACH & YOU)我喜欢使用ggplot2生成BoxPlot,并使用MACH拆分BoxPlot颜色,同时突出显示不同形状的某些点(YOU)并在黑色..?ggplot2不同因素的颜色和形状

我可以得到阴谋工作,但我不能让(YOU)因素在形状上更大,并且使它变成黑色......而不会影响图表上的所有其他点。 忽略注释行 - 我只是在玩这些。

我的数据框x的形式

MEDIAN MACH  YOU  PROD 
34.5 tool1 false  ME 
33.8 tool1 false  ME 
32.9 tool2 true  ME 
30.1 tool2 true  ME 
33.8 tool2 false.....etc 

x<- data.frame(MEDIAN=c(34,32,56,34,45,34,45,33,23), MACH=c("t1","t1","t1","t2","t2","t2","t1","t1","t2"), YOU=c("false","false","false","false","true","true","true","false","false"), PROD="U","U","U","U","U","U","U","U","U") 
ggplot(data=x,aes(MACH,MEDIAN))+ 
    geom_boxplot(fill = "white", colour = "blue")+ 
    theme(panel.grid.minor = element_line(colour = "grey"), plot.title = element_text(size = rel(0.8)),axis.text.x = element_text(angle=90, vjust=1), strip.text.x = element_text(size = 8, colour = "black", face = "bold")) + 
    #geom_abline(colour = "grey80")+ 
    #geom_point(shape = factor(YOURLOTS)), size = 3) + 
    #geom_hline(yintercept=x$TARG_AVG,colour = "green")+ 
    #geom_hline(yintercept=x$TARG_MIN,colour = "red")+ 
    #geom_hline(yintercept=x$TARG_MAX,colour = "red")+ 
    geom_point(alpha = 0.6, position = position_jitter(w = 0.05, h = 0.0), aes(colour=factor(MACH),shape = factor(YOU)), size =3)+ 

    facet_wrap(~PROD, scales = "free") + 
    ggtitle("MyTitle") + 
    scale_size_area() + 
    xlab("STAGE HIST EQUIPID")+ 
    ylab("yaxis") 

enter image description here

+0

您的代码不编译......请提供可重复的例子。在'x'上使用'dput'。 – pcantalupo

+0

我修复的ylab和标题不在报价 – PaulBeales

回答

0

我会用两个子集和两个电话解决这geom_point()

library(ggplot2) 

x <- data.frame(MEDIAN = c(34,32,56,34,45,34,45,33,23), 
       MACH = c("t1","t1","t1","t2","t2","t2","t1","t1","t2"), 
       YOU = c("false","false","false","false","true","true","true","false","false"), 
       PROD = c("U","U","U","U","U","U","U","U","U")) 

ggplot(data = x, aes(MACH, MEDIAN)) + 
    geom_boxplot(fill = "white", colour = "blue") + 
    geom_point(data = subset(x, YOU != "true"), aes(color = MACH), 
      size = 8, alpha = 0.6, 
      position = position_jitter(w = 0.05, h = 0.0)) + 
    geom_point(data = subset(x, YOU == "true"), aes(shape = YOU), 
      color = "black", size = 8, alpha = 0.6, 
      position = position_jitter(w = -0.05, h = 0.0)) + 
    labs(title = "My Title", x = "Stage Hist Equip ID", y = "y-axis") 

Plot

+0

我想要通过颜色(任何颜色)拆分箱形图......但是我需要你的因子是不同的/更大的形状,它们必须是黑色。 – PaulBeales

+0

@PaulBeales这仍然不清楚。 'YOU'因素有两个值,'true'和'false' - 两个值应该用相同的形状表示吗?也许你可以用你的样本数据手绘一幅最终可视化图片的样子。 – JasonAizkalns

+0

我应该只是有TRUE,然后让它们成为不同的形状,并使它们变成黑色....然后,箱形图应该按颜色分开,但形状相同。 – PaulBeales

1

如果您希望为你提供积分大小不同,具体取决于它们的值,您可以在geom_point()内添加aes(size = factor(YOU))

您可以选择添加scale_size_discrete(range = c(3, 6))的点的大小范围。在这个例子中,最小尺寸是3,最大值为6。

这将是

ggplot(data = x, aes(MACH, MEDIAN)) + 
    geom_boxplot(fill = "white", aes(color = MACH)) + 
    geom_point(aes(shape = factor(YOU), size = factor(YOU)), color = "black", alpha = 0.6, position = position_jitter(w = 0.05, h = 0.0)) + 
    labs(title = "My Title", x = "Stage Hist Equip ID", y = "y-axis") + 
    scale_size_discrete(range = c(3, 6)) 
+0

alomost there - 无论如何,使FALSE(小)指向相同的颜色作为其各自的BoxPlots – PaulBeales