Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.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 使用不同长度列的方框图_R_Boxplot - Fatal编程技术网

R 使用不同长度列的方框图

R 使用不同长度列的方框图,r,boxplot,R,Boxplot,我想做一些方框图,但我有数据,每列的行数不同。 我的数据如下所示: OT1 OT2 OT3 OT4 OT5 OT6 22,6130653 16,6666667 20,259481 9,7431602 0,2777778 16,0678643 21,1122919 32,2946176 11,396648 10,9458023 4,7128509 10,8938547 23,5119048 19,5360195 23,932

我想做一些方框图,但我有数据,每列的行数不同。 我的数据如下所示:

OT1     OT2     OT3     OT4     OT5     OT6
22,6130653  16,6666667  20,259481   9,7431602   0,2777778   16,0678643
21,1122919  32,2946176  11,396648   10,9458023  4,7128509   10,8938547
23,5119048  19,5360195  23,9327541  39,5634921  0,6715507   12,2591613
16,9880885  39,5365943  7,7568134   22,7453205  3,6410445   11,7610063
            32,768937   25,2897351  9,6288027   4,1629535   3,7251656
            40,7819933              15,6320021  5,9171598   
            23,7961828              14,3728125  2,1887585
我想为每一列(OT1,OT2…)绘制一个方框图,但前三列和后三列一起分组。 我试过:

>mydata-mydata-t箱线图(mydata-t,ylab=“OTU丰度(%)”,las=2,at=c(1,2,35,6,7))
但它不起作用… 我该怎么办?
谢谢

不容易使用R基本图对箱线图进行分组,最好在此处使用
ggplot2
。无论这里有什么困难,都是如何重新格式化数据,并以长格式重新格式化数据

    dat <- read.table(text='OT1     OT2     OT3     OT4     OT5     OT6
22,6130653  16,6666667  20,259481   9,7431602   0,2777778   16,0678643
21,1122919  32,2946176  11,396648   10,9458023  4,7128509   10,8938547
23,5119048  19,5360195  23,9327541  39,5634921  0,6715507   12,2591613
16,9880885  39,5365943  7,7568134   22,7453205  3,6410445   11,7610063
            32,768937   25,2897351  9,6288027   4,1629535   3,7251656
            40,7819933              15,6320021  5,9171598   
            23,7961828              14,3728125  2,1887585',header=TRUE,fill=TRUE)
dat = sapply(dat,function(x)as.numeric(gsub(',','.',x))) 
dat.m <- melt(dat) 
dat.m <- transform(dat.m,group=ifelse(grepl('1|2|3',Var2),
   'group1','group2')) 
 ggplot(dat.m)+ 
     geom_boxplot(aes(x=group,y=value,fill=Var2))


dat或使用@agstudy的“dat”使用
boxplot

df <- melt(dat)
boxplot(value ~ Var2, data = df, at = 1:6 + c(0.2, 0, -0.2))

df结合这两个答案并扩展Henrik的答案,您还可以在
boxplot()中将OT分组。

dat <- read.table(text='OT1     OT2     OT3     OT4     OT5     OT6
22,6130653  16,6666667  20,259481   9,7431602   0,2777778   16,0678643
21,1122919  32,2946176  11,396648   10,9458023  4,7128509   10,8938547
23,5119048  19,5360195  23,9327541  39,5634921  0,6715507   12,2591613
16,9880885  39,5365943  7,7568134   22,7453205  3,6410445   11,7610063
            32,768937   25,2897351  9,6288027   4,1629535   3,7251656
            40,7819933              15,6320021  5,9171598   
            23,7961828              14,3728125  2,1887585',header=TRUE,fill=TRUE)

dat <- sapply(dat,function(x)as.numeric(gsub(',','.',x)))
dat.m <- melt(dat) 
dat.m <- transform(dat.m,group=ifelse(grepl('1|2|3','4|5|6'),
                                      'group1','group2')) 
as.factor(dat.m$X2)
 boxplot(dat.m$value~dat.m$X2,data=dat.m, 
        axes = FALSE, 
        at = 1:6 + c(0.2, 0, -0.2), 
        col = rainbow(6))
axis(side = 1, at = c(2, 5), labels = c("Group_1", "Group_2"))
axis(side = 2, at = seq(0, 40, by = 10))
legend("topright", legend = c("OT1", "OT2", "OT3", "OT4", "OT5", "OT6"), fill = rainbow(6))
abline(v = 3.5, col = "grey")
box()


图例工作的dat+1。在R基本情节中处理传奇总是很有挑战性的。感谢grafic@agstudy。只是忘了盒子,但没关系。:)嗨,洛基,谢谢你的帮助!我尝试了你的代码,但当我运行
dat.m时,你可以尝试更一般的方法,例如:
nr如果可能的话,我认为最容易更改作为数据库读取的文本文件中的数据。把它改成“OT01”,“OT02,…OT09,OT10,OT11…然后他们就应该被订购了
dat <- read.table(text='OT1     OT2     OT3     OT4     OT5     OT6
22,6130653  16,6666667  20,259481   9,7431602   0,2777778   16,0678643
21,1122919  32,2946176  11,396648   10,9458023  4,7128509   10,8938547
23,5119048  19,5360195  23,9327541  39,5634921  0,6715507   12,2591613
16,9880885  39,5365943  7,7568134   22,7453205  3,6410445   11,7610063
            32,768937   25,2897351  9,6288027   4,1629535   3,7251656
            40,7819933              15,6320021  5,9171598   
            23,7961828              14,3728125  2,1887585',header=TRUE,fill=TRUE)

dat <- sapply(dat,function(x)as.numeric(gsub(',','.',x)))
dat.m <- melt(dat) 
dat.m <- transform(dat.m,group=ifelse(grepl('1|2|3','4|5|6'),
                                      'group1','group2')) 
as.factor(dat.m$X2)
 boxplot(dat.m$value~dat.m$X2,data=dat.m, 
        axes = FALSE, 
        at = 1:6 + c(0.2, 0, -0.2), 
        col = rainbow(6))
axis(side = 1, at = c(2, 5), labels = c("Group_1", "Group_2"))
axis(side = 2, at = seq(0, 40, by = 10))
legend("topright", legend = c("OT1", "OT2", "OT3", "OT4", "OT5", "OT6"), fill = rainbow(6))
abline(v = 3.5, col = "grey")
box()