我正在努力与ggplot2在同一个图上绘图 1)表示两种植物品种产量的条形图 2)堆积条形图,表示由上述两种品种制成的混合物的产量。
我的数据位于不同的数据框中,例如:
> pure
Var mean sd
1 Dinosor 855.5000 71.52783
2 Rytmic 883.5667 214.19844
> mixt
Var mean sd
1 Dinosor 429.2333 124.1794
2 Rytmic 378.8333 156.5239
我的第一层是:
ggplot(data=pure, aes(x=Var, y=mean, fill=Var)) +
geom_bar(stat="identity")
关于如何在数据框“mixt”的数据混合中添加一个(单个)堆积条代表单一品种产量的任何想法?
提前致谢,
文森特
答案 0 :(得分:1)
我不完全确定你在问什么,但这会给你想要的东西吗?
yield <- rbind(transform(pure, mix = Var), transform(mixt, mix = 'Mixed'))
ggplot(yield, aes(x=mix, y=mean, fill=Var)) +
geom_bar(stat="identity")
通常在使用ggplot
时,如果可以,最好尝试将所有内容绘制到一个数据框中。我添加了另一列mix
,它代表混合物或单一植物。然后,您可以根据Var
进行拆分,以便为mixt
数据提供堆叠条。
看到你对使用单独的图层做这件事感兴趣,你可以做类似的事情:
ggplot() +
geom_bar(data = transform(pure, mix = Var), aes(x=mix, y=mean, fill=Var), stat="identity") +
geom_bar(data = transform(mixt, mix = 'Mixed'), aes(x=mix, y=mean, fill=Var), stat="identity")
这实际上是相同的,但有两组数据。虽然它比较麻烦但你只会创建更多的问题,比如排序(这个图给你的是Dinosor,Mixed和Rytmic ......这可能不是你想要的那些吧。)
你可以改变它,所以它不是那么重复:
ggplot() +
mapply(function(x, type)
geom_bar(data = transform(x, mix = type),
aes(x=mix, y=mean, fill=Var), stat="identity"),
list(pure, mixt),
list(pure$Var, 'Mixed'))
但那可能看起来很神秘。