我试图绘制每个样本的单个箱图,按性别分组和着色。然而,当我只有两种性别时,显然逻辑的代码以3种颜色绘制。
这是数据集:
https://www.dropbox.com/s/vm6bdiqmymi5jbe/methodissues.csv?dl=0
以下是代码:
VMT=read.csv("methodissues.csv")
ggplot(VMT, aes(x=sex,group=specimen,fill=sex, y=VMT)) +
geom_boxplot(width = 1) +
xlab("specimens")+
ylab("VMT (°C)")+
theme(panel.background = element_rect(fill='transparent', colour='black'),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
axis.title.x = element_text(colour="black"),
axis.text.x = element_text(angle=0, vjust=0.5,colour="black", size=14),
axis.title.y = element_text(colour="black", size=14),
axis.text.y = element_text(angle=0, vjust=0.5,colour="black", size=14)
)+
theme(legend.justification=c(1,1), legend.position="none")
答案 0 :(得分:0)
问题是你有“利益冲突”。您希望按specimen
对这些框进行分组(这会产生一个基于VMT
中最多只有4个值的框。更多内容见下文。)。但是,与此同时,您希望每个框都按性别着色,这在某些情况下是不可能的(例如specimen
等于C5MT
时),因为{{1}中有一些值与性别specimen
和M
相关的。这是第三种颜色来自哪里。它只是两种颜色的混合,用于着色F
。
可能的解决方案:
sex
require(ggplot2)
VMT=read.csv("methodissues.csv")
ggplot(VMT, aes(x = specimen, y = VMT, fill = sex)) +
geom_boxplot(width = 1)
我强烈建议您重新考虑一下您实际想说的内容。我不认为这样的图表是合适的,因为每个框只基于最多4个值,这使得它几乎没有意义(毕竟,你试图传达一些分布感)。一些“盒子”(如ggplot(VMT, aes(x = sex, fill = sex, y = VMT)) +
geom_boxplot(width = 1) +
facet_grid(~ specimen)
和specimen = C5MT
)甚至只由1个值组成(因此,男性只有3个)。这使得查看图表更加可疑。