这些是使用ggplot获取堆积条形图的代码和示例数据。请将以下示例粘贴到名为“data”的文本文件中:
Var1 Var2 value
a z 0.17835287
b z 0.20872632
c z 0.54772440
d z 0.04270081
e z 0.02249560
然后在R:
中运行if (!require("ggplot2")) {
install.packages("ggplot2", repos="http://cran.rstudio.com/")
library("ggplot2")
}
library("ggplot2")
data = read.delim("data", sep = " ")
ggplot(data[!is.na(data$value),], aes(x = Var2, y = value, fill = factor(Var1))) +
geom_bar(stat = "identity") +
scale_fill_manual(values=c("#FFED00", "#ffffff", "#ffffff", "#00008F", "#ffffff")) +
scale_fill_manual(values=c("#5AFFA5", "#800000", "#DB0000", "#BE1FC1", "#0047FF")) +
facet_grid(Var1~., as.table=FALSE, scale="free_y", space = "free_y") +
theme_minimal() +
geom_vline(xintercept=length(levels(data$Var2)) + 0.5, size=0.3) +
scale_y_continuous(breaks=seq(0, 1, 0.05), expand = c(0, 0)) +
theme(legend.position="none",
axis.text.x = element_text(angle = 45, colour="black", vjust = 1, size=8, hjust=1),
axis.title.x = element_blank(),
axis.title.y = element_blank(),
axis.text.y = element_text(size=4),
axis.ticks.y = element_line(size = 0.3, colour = "black", linetype = "solid"),
axis.line.y=element_line(),
strip.text.y=element_text(size = 8, colour="black", family="",angle=00, hjust = 0),
panel.grid=element_blank(),
axis.line=element_line(size = 0.3, colour = "black", linetype = "solid"),
axis.ticks.x=element_line(size = 0.3, colour = "black", linetype = "solid"),
panel.background=element_blank(), panel.margin = unit(0, "lines"),
plot.margin = unit(c(0.4,0,0.2,0.4), "cm"))
然后你应该看到这样的情节:
现在我想让一些堆叠的条形图(a和d)由背景颜色和另一种颜色叠加在前者上,形状为条纹,类似于“密度”选项中的“ barplot“功能:
barplot(c(1), col=c("red"))
barplot(c(1), density=c(2), col=c("blue"), add=T)
为此,我尝试的是运行两次ggplot的“scale_fill_manual”选项,第一个只填充颜色a和d条:
然后第二个填充所有条形但改变a和d条的颜色。问题是ggplot只是覆盖了第一个“scale_fill_manual”,而我想做的是第二次将a和d条的颜色叠加在前面的条纹形状上。总结一下,结果将大致类似于这样(将第三个图叠加在1个图上):
您是否知道我可以在“scale_fill_manual”选项中进行任何调整以强制执行此操作?
由于