我在ggplot中有几列数据,希望在箱线图中绘制。每个框代表一列数据。盒子应该以四个为一组(红色,绿色,蓝色,黄色)上色,即,每个第二个盒子被涂成绿色,每四个盒子被涂成黄色等。
样本数据
X1 X1.1 X1.2 X1.3 X2 X2.1 X2.2 X2.3
1 2 3 4 3 2 3 1
2 4 5 5 5 2 1 2
2 3 2 1 2 1 2 5
Run Code Online (Sandbox Code Playgroud)
我得到的最接近的是用重复的颜色值填充矢量colorVec并尝试将其应用于ggplot。
graph<-ggplot(expressionframemelted, aes(x = Var2, y=value)) +
geom_boxplot(aes(fill = factor(Var2)))+
ggtitle("Expression Values and Medians")+xlab(valueAmountsP)+ylab("Counts log 10")+
stat_summary(fun.y = median, geom = "point", position = position_dodge(width = .9),
size = 6, shape = 4, show_guide = F)+
theme(axis.text.x=element_text(angle=90))+
scale_x_discrete(labels=nameVecGraph)+
scale_y_log10()+
scale_fill_manual( values = colorVec)
Run Code Online (Sandbox Code Playgroud)
问题是,如果列值真的很低或为零,或者由于某种原因在图表ggplot上没有出现框的点,则跳过对它们的填充,并继续进行下一个列,从而弄乱了颜色的顺序。
还有更简单的方法吗?
编辑:我尝试了Epi的答案,但ggplot跳过具有低值的列并弄乱颜色顺序的问题仍然存在。我发现这可能是由于使用了对数刻度。例如尝试 …
有没有办法用标签连接字符串?我想生成一个制表符分隔文件,但使用
paste(c("blah","blah"), collapse="\t")
Run Code Online (Sandbox Code Playgroud)
给
"blah\tblah"
Run Code Online (Sandbox Code Playgroud)
运用
paste(c("blah","blah"), sep='\t')
Run Code Online (Sandbox Code Playgroud)
给
"blah" "blah"
Run Code Online (Sandbox Code Playgroud)
我想要一些有效的东西
"blah blah"
Run Code Online (Sandbox Code Playgroud)
其中条目是一个字符串,其中的单词由制表符分隔.