Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在R中使用ggplot2更正代码以运行堆叠条形图?_R - Fatal编程技术网

如何在R中使用ggplot2更正代码以运行堆叠条形图?

如何在R中使用ggplot2更正代码以运行堆叠条形图?,r,R,我的数据包括6个样本(目前为rownames)和24个列,每个列以不同的细菌物种命名,数字是相对丰度 这里是结构 dput(sig_speciesstacked) 结构(c(“控制1”、“控制2”、“控制3”、“疾病1”), “疾病2”、“疾病3”、“0.32503”、“0.55197”、“1.23225”、“0”, "0", "0", "0.11568", "1.27372", "0.04306", "0", "0", "0", "0.78402", "0.99583", "0.0372

我的数据包括6个样本(目前为rownames)和24个列,每个列以不同的细菌物种命名,数字是相对丰度

这里是结构

dput(sig_speciesstacked) 
结构(c(“控制1”、“控制2”、“控制3”、“疾病1”), “疾病2”、“疾病3”、“0.32503”、“0.55197”、“1.23225”、“0”, "0", "0", "0.11568", "1.27372", "0.04306", "0", "0", "0", "0.78402", "0.99583", "0.03723", "0", "0", "0", "0.07664", "0.0932", "0.28018", "0", "0", "0", "0.29037", "0.74246", "0.3061", "0", "0", "0", "0.22328", "0.40351", "0.00416", "0", "0", "0", "0", "0", "0", "0.23779", "0.70807", "0.00891", "0.04852", "0.34497", "0.19266", "0", "0", "0", "0.26408", "0.05026", "0.0022", "0", "0", "0", "0.31206", "0.59428", "0.15606", "0", "0", "0", "0.13716", "0.55023", "0.4716", "0", "0", "0", "0.27194", "0.57013", "0.23164", "0", "0", "0", "6.84233", "2.18166", "0.6827", "0", "0", "0", "0", "0", "0", "0.94569", "0.0108", "0.06016", "0.32686", "0.04407", "1.02125", "0", "0", "0", "0", "0", "0", "0.51243", "0.10427", "1.48269", "0", "0", "0", "1.49594", "0.90364", "0.0081", "1.27002", "1.80154", "0.33065", "0", "0", "0", "2.40484", "0.36535", "3.79276", "0", "0", "0", "4.23202", "2.63742", "0.37963", "0", "0", "0", "0.38793", "0.81874", "0.04095", "0", "0", "0", "0", "0", "0", "1.04847", "0.08983", "0.02608", "0", "0", "0", "0.14408", "0.1637", “0.07754”),.Dim=c(6L,24L),.Dimnames=list(c(“1”、“2”、“3”), “4”、“5”、“6”)、c(“样本”、“Alistipes_finegoldii”、“Alistipes_模糊”, “Alistipes_onderdonkii”、“Alistipes_senegalensis”、“Bacteriomoidales_bacterium_ph8”, “青少年双歧杆菌”、“牙双歧杆菌”、“气相双歧杆菌”, “嗜酸杆菌”、“嗜酸杆菌”、“长链菌”, “真杆菌”、“直肠真杆菌”、“镰刀菌”, “Lachnospiraceae_bacterium_3_1_46FAA”,“Lactobacillus_mucosae”, “巨球藻微核”、“内脏异味杆菌”、“人玫瑰杆菌”, “瘤胃球菌”、“瘤胃球菌”、“副鳗鲡链球菌”, “Veillonella_atypica”))

我试图制作一个堆叠条形图,显示不同样本(3个对照组和3个疾病)的不同丰度

首先,我在包含示例名称的列中添加了一个列名,因此总共有25列。第一个包含样本,2:25包含24种不同物种的丰度

 sig_speciesstacked <- cbind(Samples= rownames(sig_speciesstacked), sig_speciesstacked)

 print(colnames(sig_speciesstacked))

 rownames(sig_speciesstacked) <- c("1", "2", "3", "4", "5", "6").  
以此类推,24个物种中的每一个重复6次,不同的样本对应不同的丰度水平

不知道为什么Var1和Var2没有在我上面的代码行中分别重命名为“Samples”和“species”,以及为什么输出是这样的

使用aes(x=Var1等)运行ggplot会得到一个完全错误的绘图


编辑;对于有类似问题的任何人,请不要使用cbind。在这里的一个例子中,他们让第1列包含示例名称,因此我使用了它。如果您不这样做,只使用行名称作为示例名称,那么它就可以正常工作。非常感谢那些帮助过下面的人

很高兴你第一次在这里发帖。我不知道我是否正确理解了你的问题,但这是我试图解决的问题

请注意,我的方法使用“管道”(
%%>%
)以及包
tidyverse
中的函数
pivot\u longer
,而不是
melt

#加载所需的软件包(包括ggplot2),如果尚未安装,请先安装
图书馆(“tidyverse”)
#将数据放入对象中
sig_规格堆叠%
#使用矩阵行名称(您的数据)并将它们放入列名“type”中
行名到列(var=“type”)%>%
#枢轴更长,而不是熔化
枢轴长度(-type,names\u to=“names”,values\u to=“value”)
ggplot(数据=df_图,
aes(x=名称,y=值,组=类型,填充=类型))+
几何图形栏(stat=“identity”,position=“stack”)

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


更新

在澄清并再次查看代码之后,解决方案似乎更简单。正如@camille所指出的那样,你走在一条很好的道路上,只是你没有从你“融化”的数据中为情节使用正确的名字

ggplot
中的美学(
aes
)需要参考数据中的列名(
sig_speciesstackplot1
)。正如您自己看到的,它们是
Var1
Var2
、和
value

库(“tidyverse”)
图书馆(E2)
#> 
#>正在附加程序包:“重塑2”
#>以下对象已从“package:tidyr”屏蔽:
#> 
#>史密斯
#你的代码
sig_物种5 5个样本疾病2
#>6样本疾病3
#在stringsAsFactors=F的data.frame上使用Reformase2::melt
sig_物种StackPlot1样本物种值
#>1控制1 Alistipes_finegoldii 0.32503
#>2控制2 Alistipes_finegoldii 0.55197
#>3控制3 Alistipes_finegoldii 1.23225
#>4疾病1 Alistipes_finegoldii 0
#>5疾病2 Alistipes_finegoldii 0
#>6疾病3 Alistipes_finegoldii 0

由(v0.3.0)

于2019-11-26创建的
ggplot
调用中的列名不在您的数据中。熔化后,你没有“样本”和“丰度”这两个栏目。首先,你没有“样本”这两个栏目,它是“样本”。重要的是,这只是一系列typos@camille请你澄清一下好吗?熔化后,我的sig_规格StackPlot1的列为Var1、Var2和value。我不明白为什么当我试图给x轴和y轴一个标题时会出现错误。fill=species也无法识别。
aes
的参数是数据框中列的名称。如果您的数据帧包含Var1、Var2和value列,但您告诉
aes
它们是样本,
 sig_speciesstackplot1 <- melt(sig_speciesstacked, id.vars = "Samples", variable.name = "species")

 pdf("Stackedbarplot.species.pdf", width = 6, height = 7)
 ggplot(sig_speciesstackplot1,aes(x=Samples, y=value, fill= species))+ geom_bar(stat = 
 "identity", position="fill")
       Var1    Var2                 value
     1  1   Samples               Control1
     2  2   Samples               Control2
     3  3   Samples               Control3
     4  4   Samples               Disease1
     5  5   Samples               Disease2
     6  6   Samples               Disease3
     7  1   Alistipes_finegoldii    0.32503
     8  2   Alistipes_finegoldii    0.55197
     9  3   Alistipes_finegoldii    1.23225
     10 4   Alistipes_finegoldii    0