对于我使用ggplot2生成的分组条形图,我有以下输入:
Disease;Category;Value;pValue
Disease A;Count;100;0.0001
Disease A;Expected Count;50;0.0001
Disease B;Count;80;0.0005
Disease B;Expected Count;40;0.0005
Disease C;Count;60;0.0010
Disease C;Expected Count;40;0.0010
Disease D;Count;45;0.05
Disease D;Expected Count;50;0.05
以下代码生成分组的条形图:
literature.disease2 <- read.table(file = "/user/literature-disease2.csv",sep=";", header=TRUE)
literature.disease2.sorted <- literature.disease2[order(literature.disease2$pValue,literature.disease2$Category),]
ggplot(data=literature.disease2.sorted, aes(x=Disease, y=Value, fill=Category)) +
geom_bar(stat="identity", position=position_dodge(),size=.3, colour="black") +
scale_fill_manual(values=c("Count" = "lightblue", "Expected Count" = "pink")) + # Change color
xlab("Disease Category") + ylab("Literature Count") + # Set axis labels
ggtitle("Genome-Wide Literature Counts") + # Set title
theme_bw() +
theme(axis.text.x = element_text(angle =90, hjust = 1,vjust=0.5))
现在,当pValue <= 0.005时,我想用蓝色(而不是浅蓝色)和紫色(而不是粉红色)的颜色条。我知道我必须更改 scale_fill_manual 选项,但我不知道如何为分组条形图执行此操作。任何人都可以帮忙吗?
先谢谢,弗兰克
答案 0 :(得分:1)
这段代码可能会让你开始,但考虑增加重要性,例如alpha美学而不是双重编码。
关键是使用interaction()
作为fill
美学并适当地映射颜色。
library(ggplot2)
literature.disease2 <- read.table(text = "Disease;Category;Value;pValue
Disease A;Count;100;0.0001
Disease A;Expected Count;50;0.0001
Disease B;Count;80;0.0005
Disease B;Expected Count;40;0.0005
Disease C;Count;60;0.0010
Disease C;Expected Count;40;0.0010
Disease D;Count;45;0.05
Disease D;Expected Count;50;0.05",sep=";", header=TRUE)
literature.disease2.sorted <- literature.disease2[order(literature.disease2$pValue,literature.disease2$Category),]
ggplot(data=literature.disease2.sorted, aes(x=Disease, y=Value, fill=interaction(Category, pValue <= .005))) +
geom_bar(stat="identity", position=position_dodge(),size=.3, colour="black") +
scale_fill_manual(values=c("Count.FALSE" = "lightblue", "Count.TRUE" = "blue", "Expected Count.FALSE" = "pink", "Expected Count.TRUE" = "purple")) + # Change color
xlab("Disease Category") + ylab("Literature Count") + # Set axis labels
ggtitle("Genome-Wide Literature Counts") + # Set title
theme_bw() +
theme(axis.text.x = element_text(angle =90, hjust = 1,vjust=0.5))
以下是我的建议情节:
ggplot(data=literature.disease2.sorted, aes(x=Disease, y=Value, fill=Category, alpha = pValue <= .005)) +
geom_bar(stat="identity", position=position_dodge(),size=.3, colour="black") +
scale_fill_manual(values=c("Count" = "blue", "Expected Count" = "purple")) + # Change color
scale_alpha_discrete(range = c(0.5, 1)) + # Make the "insignificant" bars a little more visible (default range = c(0.1,1))
xlab("Disease Category") + ylab("Literature Count") + # Set axis labels
ggtitle("Genome-Wide Literature Counts") + # Set title
theme_bw() +
theme(axis.text.x = element_text(angle =90, hjust = 1,vjust=0.5))