这是一个简短的例子
library(ggplot2)
specie <- c(rep("sorgho" , 5) , rep("poacee" , 5) , rep("banana" , 5) , rep("triticum" , 5) )
condition <- rep(c("normal" , "stress" , "Nitrogen","Nitrogen","Nitrogen") , 4)
data <- data.frame(specie,condition)
ggplot(data) + aes(x = factor(specie), fill=condition) +
geom_bar(position = "fill")
[<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9OS3M0SC5qcGcifQ==” alt =“在此处输入图像描述”>]我想纠正“氮”过多的问题,并只绘制它的相对贡献。谢谢
您可以使用dplyr将带有比例值的列直接添加到原始数据框中:
# create summary table
aa <- data.frame(with(data, table(specie, condition)))
bb <- data.frame(with(data, table(specie)))
cc <- data.frame(with(data, table(condition)))
sum <- merge(aa, bb, by= "specie") %>%
merge(cc, by = "condition") %>%
mutate(value_scaled = Freq.x/Freq.y/Freq)
colnames(sum)[3:5] <- c("sum_sp_cond", "sum_sp", "sum_cond") # better column names
绘制它:
ggplot(sum) + aes(x = factor(specie), fill=condition) +
geom_bar(position="fill")
仍然不确定我是否完全理解您的要求...并且可能会有更好的解决方案。