R ggplot2:基于条件/数值阈值的颜色分组条形图

R ggplot2:基于条件/数值阈值的颜色分组条形图,r,ggplot2,R,Ggplot2,对于使用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

对于使用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)) 

literature.disease2这段代码可能会让您开始学习,但可以考虑添加一些意义,例如,alpha美学,而不是双重编码

关键是使用
interaction()
作为
填充
美学,并适当映射颜色

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)) 
库(ggplot2)

这是一个好问题。然而,我认为您的代码太混乱,有许多不必要的部分。尽量少举你的例子,让别人更容易理解。是的,你是对的。我应该把重点放在具体的问题上,以便其他人更容易理解。谢谢你的解决方案。选项“interaction()”的使用是缺少的部分。
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))