在ggplot2中

时间:2017-10-25 15:25:32

标签: r ggplot2 bar-chart

这些是使用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"))

然后你应该看到这样的情节:

enter image description here

现在我想让一些堆叠的条形图(a和d)由背景颜色和另一种颜色叠加在前者上,形状为条纹,类似于“密度”选项中的“ barplot“功能:

barplot(c(1), col=c("red"))
barplot(c(1), density=c(2), col=c("blue"), add=T)

enter image description here

为此,我尝试的是运行两次ggplot的“scale_fill_manual”选项,第一个只填充颜色a和d条:

enter image description here

然后第二个填充所有条形但改变a和d条的颜色。问题是ggplot只是覆盖了第一个“scale_fill_manual”,而我想做的是第二次将a和d条的颜色叠加在前面的条纹形状上。总结一下,结果将大致类似于这样(将第三个图叠加在1个图上):

enter image description here

您是否知道我可以在“scale_fill_manual”选项中进行任何调整以强制执行此操作?

由于

0 个答案:

没有答案