df2 <- data.frame(supp=rep(c("VC", "OJ"), each=3),
dose=rep(c("D0.5", "D1", "D2"),2),
len=c(6.8, 15, 33, 4.2, 10, 29.5))
ggplot(data=df2, aes(x=dose, y=len, fill=supp)) +
geom_bar(stat="identity")
> df2
supp dose len
1 VC D0.5 6.8
2 VC D1 15.0
3 VC D2 33.0
4 OJ D0.5 4.2
5 OJ D1 10.0
6 OJ D2 29.5
此处,每个条形的高度对应于2个len
组的supp
的总和。我希望条形的高度对应于2个len
值中较大的一个。例如,D0.5
栏的高度应为6.8,而D
的高度应为15.
答案 0 :(得分:0)
首先按max
len
dose
进行过滤。
df2 %>% group_by(dose) %>%
filter(len == max(len)) %>%
ggplot(aes(x=dose, y=len, fill=supp)) +
geom_bar(stat="identity")
啊,好像你在寻找position_dodge()
:
df2 %>%
ggplot(aes(x=dose, y=len, fill=supp)) +
geom_bar(stat="identity", position = position_dodge(width = 0))
您可以通过在width
中指定geom_bar
来调整条形的宽度(例如,width = 1.5
)。