使用R中的正x轴水平绘制两组的条形图

使用R中的正x轴水平绘制两组的条形图,r,ggplot2,bar-chart,R,Ggplot2,Bar Chart,给定以下矩阵 df <- matrix(c(10,8, 20, 6, 20, 25,"exp", "cnt", "exp","cnt","exp","cnt","gene1","gene1","gene2","gene2","gene3","gene3"), nrow=6, dimnames=list(c("1", "2", "3","4","5","6"),c("Abundance", "Group","gene") )) 有什么建议吗?您的代码是正确的,但您的问题是将data.

给定以下矩阵

df <- matrix(c(10,8, 20, 6, 20, 25,"exp", "cnt", "exp","cnt","exp","cnt","gene1","gene1","gene2","gene2","gene3","gene3"), 
nrow=6, dimnames=list(c("1", "2", "3","4","5","6"),c("Abundance", "Group","gene")  )) 

有什么建议吗?

您的代码是正确的,但您的问题是将data.frame设置为矩阵。ggplot仅将data.frames作为输入。第二个问题是矩阵只能保存一种数据类型,因此它将所有数据都转换为一个字符(因此,当您尝试将更多数据转换为负数时,它将给出一个错误)

将数据放在data.frame中,它将工作:

库(tidyverse)
df#A tible:6 x 3
#>丰度组基因
#>         
#>1 10经验基因1
#>2 8碳纳米管基因1
#>3 20经验基因2
#>4 6碳纳米管基因2
#>5 20经验基因3
#>6 25碳纳米管基因3
ggplot()+
几何图形栏(数据=过滤器(df,组=“cnt”),
aes(x=基因,y=丰度,填充=组),
stat='identity',position='stack')+
几何图形条(数据=过滤器(df,组=“exp”),
aes(x=基因,y=丰度,填充=组),
stat='identity',position='stack')+
坐标翻转()
geom_hline(yintercept=0,linetype=“虚线”)


由(v0.3.0)于2019-07-11创建的

不起作用如何?这就是为什么最好是具体的:当我运行代码时,我会收到一条错误消息,它非常清楚地告诉我数据需要是一个数据帧。你还有别的收获吗?是的,没错。除了生成数据帧外,我还遇到了一些问题,无法为两组设置正x值,以及显示每个组对应的正确基因值。谢谢。这两个组的图显示的值似乎相同,而在df中,每个基因的值不同。运行类似的脚本时,我遇到了相同的问题(镜面反射值和正负轴)。您知道如何将两组的x轴设置为正值,并显示与每个基因/组的值相对应的条形图吗?
ggplot(df, aes(x=gene))+
  geom_bar(aes(y=Abundance, fill="exp"), stat="identity")+
  geom_bar(aes(y=-Abundance, fill="cnt"),  stat="identity")+
  scale_fill_manual("Group",values=c(exp="red",cnt="green"))+
  labs(y="Abundance")+coord_flip()