Mul*_*one 4 r colors line ggplot2 boxplot
我正在根据这些数据绘制箱图:
MY_LABEL MY_REAL MY_CATEGORY
1 [POS] .56 POS
1 [POS] .57 POS
1 [POS] .37 POS
2 [POS] .51 POS
1 [sim v] .65 sim v
...
Run Code Online (Sandbox Code Playgroud)
我正在使用ggplot2:
ggplot( data=myDF, aes( x=MY_LABEL, y=MY_REAL, fill=MY_CATEGORY ) ) +
scale_colour_manual( values=palette ) +
coord_flip() +
geom_boxplot( outlier.size = 0 )
Run Code Online (Sandbox Code Playgroud)
这工作正常,并按字段对箱图进行分组MY_CATEGORY:

我想做两件事:
1)为了提高这个图的清晰度,我想在各个块之间添加分隔符,即在POS和sim v之间sim v,之间和之间C等(参见图中丑陋的红线).我一直在努力geom_vline,没有运气.或者,我想在块之间添加空格.
2)如果我以灰度打印此图,我无法区分不同的块.我试图强制使用不同的调色板:
scale_colour_manual( values=c("black","darkgray","gray","white") )
Run Code Online (Sandbox Code Playgroud)
再一次,没有运气,情节根本没有变化.
你有什么建议吗?
这对你有用吗?
require(ggplot2)
mtcars$cyl2<- ifelse(mtcars$cyl > 4, c('A'), c('B'))
p <- ggplot(mtcars, aes(factor(cyl), mpg))
p + geom_boxplot() + facet_grid(. ~ cyl2, scales = "free", space = "free")
Run Code Online (Sandbox Code Playgroud)
会给这样的东西,

没有人涵盖水平线路线,因此我想添加一下。不知道为什么geom_vline()不为您工作。这是我所做的(选择摆脱Eric Fail的方法):
require(ggplot2)
p <- ggplot(mtcars, aes(factor(cyl), mpg))
p <- p + geom_boxplot(aes(fill=factor(cyl))) + coord_flip()
p <- p + geom_vline(xintercept=c(1.5,2.5))
p
Run Code Online (Sandbox Code Playgroud)
这里只有三个箱形图,但是在玩耍时,ggplot似乎将它们放置在整数位置。只需找出要在第(nth)行之后的行的框,然后将xintercept参数放在n+0.5该行的位置即可。您显然可以根据自己的喜好更改厚度和颜色:只需在xintercept位之后添加size=width和colour="name"即可。
顺便说一句,geom_vline()无论之前还是之后,似乎对我来说都是有效的coord_flip()。我发现这违反直觉。
我不确定bdemarest是否正确,是否需要名称与类别名称匹配。我认为问题是您曾经使用过scale_colour_manual(),如果您曾经使用过aes(..., colour=var)则适用fill=var。因此,您需要scale_fill_manual。在上面的基础上,我们可以添加:
p <- p + scale_fill_manual(values=c("black","gray","white"))
p
Run Code Online (Sandbox Code Playgroud)
请注意,我尚未定义任何要匹配的颜色的因子名称。我认为颜色只是根据它们的顺序应用于您的因子水平,但是我可能是错的。
以上所有的最终结果:
