小编sin*_*ina的帖子

ggplot:为连续x的每个组排列多个y变量的箱线图

我想为连续x变量的组创建多个变量的箱线图.对于每组x,箱形图应该彼此相邻排列.

数据如下所示:

require (ggplot2)
require (plyr)
library(reshape2)

set.seed(1234)
x   <- rnorm(100)
y.1 <- rnorm(100)
y.2 <- rnorm(100)
y.3 <- rnorm(100)
y.4 <- rnorm(100)

df <- as.data.frame(cbind(x,y.1,y.2,y.3,y.4))
Run Code Online (Sandbox Code Playgroud)

然后我融化了

dfmelt <- melt(df, measure.vars=2:5)    
Run Code Online (Sandbox Code Playgroud)

这个解决方案 中显示的facet_wrap(ggplot(facets)中的因子多个绘图)给出了单个图中的每个变量,但是我希望每个变量的箱形图彼此相邻,每个x的bin都在一个图.

ggplot(dfmelt, aes(value, x, group = round_any(x, 0.5), fill=variable))+
geom_boxplot() + 
geom_jitter() + 
facet_wrap(~variable)
Run Code Online (Sandbox Code Playgroud)

图.1

这显示了y变量彼此相邻但不是bin x.

ggplot(dfmelt) +
geom_boxplot(aes(x=x,y=value,fill=variable))+
facet_grid(~variable)
Run Code Online (Sandbox Code Playgroud)

fig2

现在我想为x的每个bin生成这样的图.

什么必须改变或添加?

r continuous ggplot2 boxplot r-factor

15
推荐指数
1
解决办法
4万
查看次数

ggplot:观察作为x轴标签的盒形图数

根据我在上一篇文章中的答案,我已经成功地创建了一个非常漂亮的箱形图(按照我的目的),按因子分类并分箱:ggplot:为连续x的每组安排多个y变量的箱线图

现在,我想根据每个箱形图的观察次数来定制x轴标签.

require (ggplot2)
require (plyr)
library(reshape2)

set.seed(1234)
x<- rnorm(100)
y.1<-rnorm(100)
y.2<-rnorm(100)
y.3<-rnorm(100)
y.4<-rnorm(100)

df<- (as.data.frame(cbind(x,y.1,y.2,y.3,y.4)))
dfmelt<-melt(df, measure.vars = 2:5)

dfmelt$bin <- factor(round_any(dfmelt$x,0.5))

dfmelt.sum<-summary(dfmelt$bin)    

ggplot(dfmelt, aes(x=bin, y=value, fill=variable))+
geom_boxplot()+
facet_grid(.~bin, scales="free")+
labs(x="number of observations")+
scale_x_discrete(labels= dfmelt.sum)
Run Code Online (Sandbox Code Playgroud)

dfmelt.sum只让我对每个箱不是每个箱线图观察的总数.箱线图统计给我每个箱线图观察的数量.

dfmelt.stat<-boxplot(value~variable+bin, data=dfmelt)
dfmelt.n<-dfmelt.stat$n
Run Code Online (Sandbox Code Playgroud)

但我怎么添加刻度标记和标签为每个箱线图?

谢谢,新浪

UPDATE

我一直在努力.最大的问题是,在上面的代码中,每个方面只提供一个刻度标记.由于我还想绘制每个箱图的平均值,我已经使用交互分别绘制每个箱图,这也为每个箱图在x轴上添加了刻度标记:

require (ggplot2)
require (plyr)
library(reshape2)

set.seed(1234) x<- rnorm(100)
y.1<-rnorm(100)
y.2<-rnorm(100)
y.3<-rnorm(100)
y.4<-rnorm(100)

df<- (as.data.frame(cbind(x,y.1,y.2,y.3,y.4))) dfmelt<-melt(df, measure.vars = 2:5)

dfmelt$bin <- factor(round_any(dfmelt$x,0.5))

dfmelt$f2f1<-interaction(dfmelt$variable,dfmelt$bin)

dfmelt_mean<-aggregate(value~variable*bin, data=dfmelt, FUN=mean)
dfmelt_mean$f2f1<-interaction(dfmelt_mean$variable, dfmelt_mean$bin)

dfmelt_length<-aggregate(value~variable*bin, data=dfmelt, FUN=length)
dfmelt_length$f2f1<-interaction(dfmelt_length$variable, dfmelt_length$bin) …
Run Code Online (Sandbox Code Playgroud)

interaction r ggplot2 boxplot axis-labels

3
推荐指数
1
解决办法
7872
查看次数

标签 统计

boxplot ×2

ggplot2 ×2

r ×2

axis-labels ×1

continuous ×1

interaction ×1

r-factor ×1