我正在尝试使用R来显示合并的boxplot,我确信这可能很容易,但我的数据有点复杂,数据有三角形结构。
下面是数据框 aa 和 dd 的示例:
2014-01-15 2014-02-15 2013-03-15 2013-04-15
1 0.34 0.23 0.33 0.24
2 NA 0.49 0.38 0.34
3 NA NA 0.34 0.33
4 NA NA NA 0.28
2014-01-15 2014-02-15 2013-03-15 2013-04-15
1 0.24 0.33 0.23 0.24
2 NA 0.29 0.28 0.44
3 NA NA 0.34 0.31
4 NA NA NA 0.29
使用下面的代码生成data.frame:)
aa <- data.frame(c(0.34,NA,NA,NA),
+ c(0.23,0.49,NA,NA),
+ c(0.33,0.38,0.34,NA),
+ c(0.24,0.34,0.33,0.28))
dd <- data.frame(c(0.24,NA,NA,NA),
+ c(0.33,0.29,NA,NA),
+ c(0.23,0.28,0.34,NA),
+ c(0.24,0.44,0.31,0.29))
colnames(aa) <- c("2014-01-15", "2014-02-15", "2013-03-15","2013-04-15")
colnames(dd) <- c("2014-01-15", "2014-02-15", "2013-03-15","2013-04-15")
我编写了代码来为每个数据集生成绘图,在名称中也是如此。但是绘图无法显示轴是很奇怪的。
boxplot(aa,names = c("2014-01-15", "2014-02-15","2013-03-15","2013-04-15"))
boxplot(dd,names = c("2014-01-15", "2014-02-15","2013-03-15","2013-04-15"))
我怎么试过使用合并下面的代码:
boxplot(data.frame(aa,dd),names = c("2014-01-15", "2014-02-15","2013-03-15","2013-04-15"))
图表看起来像这样,但没有日期轴,我不知道为什么!我想把数据放在同一个日期。但在这里,数据集仍然是分开的:(
答案 0 :(得分:2)
您有几个问题:您正在使用四个提供的名称绘制八个箱图,这就是他们不会出现的原因。正如您所说,您的数据仍然是分开的,这是因为数据中的每一列都按照您自己的方框图绘制,按照您的数据在列中的顺序。解决方案在于组合数据的另一种方式。我已经使用ggplot来创建情节,因为它可以很好地处理分组的箱形图。
library(reshape2)
library(ggplot2)
#combine the data with a grouping variable, otherwise data is not identifiable
aa$group <- 'a'
dd$group <- 'd'
ad <- rbind(aa,dd)
您的数据需要采用不同的格式,每次观察都有自己的行。
#melt the data
ad$id <- 1:nrow(ad)
ad_m <- melt(ad,id.vars=c("id","group"))
绘制分组条:
p2 <- ggplot(ad_m, aes(x=variable, y=value,color=group))+
geom_boxplot(position="dodge")
p2