Ns

箱ひげ図に線を追加するにはどうすればよいですか?



How Add Line Boxplot



解決:

別の方法は次のとおりです。

データ$ U<- paste(X, Z) # Extra interaction qplot(U, Y, data = DATA, geom = 'boxplot', fill = Z, na.rm = TRUE, outlier.size = NA, outlier.colour = NA) + facet_grid(Gp ~ Fc) + theme_light() + scale_colour_gdocs() + theme(legend.position = 'bottom') + stat_summary(fun.y = mean, geom = 'point', shape = 23, position = position_dodge(width = .75)) + stat_summary(fun.y = mean, geom = 'line', aes(group = X)) + # Lines scale_x_discrete(labels = rep(levels(X), each = 2)) + xlab('X') # Some fixes  

ここに画像の説明を入力してください


整頓された解決策も試すことができます:

library(tidyverse)DATA%>%ggplot()+ geom_boxplot(aes(X、Y、fill = Z))+ stat_summary(aes(X、Y、fill = Z)、fun.y = mean、geom = 'point' 、position = position_nudge(x = c(-0.185,0.185)))+ geom_segment(data =。%>%group_by(X、Z、Gp、Fc)%>%summarise(M = mean(Y))%>% ungroup()%>%mutate(Z = past0( 'C'、Z))%>%spread(Z、M)、aes(x = as.numeric(X)-0.185、y = C100、xend = as。数値(X)+ 0.185、円d = C50))+ facet_grid(Gp〜Fc)

ここに画像の説明を入力してください

考え方は、d.b。の回答と同じです。geom_segment呼び出しのdata.frameを作成します。利点は、dplyrワークフローです。したがって、すべてが1回の実行で実行されます。

DATA%>%group_by(X、Z、Gp、Fc)%>%summarise(M = mean(Y))%>%ungroup()%>%mutate(Z = paste0( 'C'、Z))%> %spread(Z、M)#A tibble:8 x 5 X Gp Fc C100 C50 * 1 B1 G1 FC1 0.169 0.281 2 B1 G1 FC2 0.170 0.294 3 B1 G2 FC1 0.193 0.270 4 B1 G2 FC2 0.168 0.269 5 B2 G1 FC1 0.171 0.276 6 B2 G1 FC2 0.161 0.292 7 B2 G2 FC1 0.188 0.269 8 B2 G2 FC2 0.163 0.264

または、ジュリアスの答えとは異なるアプローチを試すことができます。ブレークとラベルを追加して、期待される出力を取得し、数値のオフセットを試してみてくださいX2とboxplot関数内のwidthパラメーターを使用して、ボックスを一緒にプロットします。

データ%>%mutate(X2 = as.numeric(interaction(Z、X)))%>%mutate(X2 = ifelse(Z == 100、X2 + 0.2、X2-0.2))%>%ggplot(aes( X2、Y、fill = Z、group = X2))+ geom_boxplot(width = 0.6)+ stat_summary(fun.y = mean、geom = 'point')+ stat_summary(aes(group = X)、fun.y = mean 、geom = 'line')+ facet_grid(Gp〜Fc)+ scale_x_continuous(breaks = c(1.5,3.5)、labels = c( 'B1'、 'B2')、minor_breaks = NULL、limits = c(0.5,4.5 ))

ここに画像の説明を入力してください


これはエレガントではありませんが、これを試してください

tmp1 =集計(Y〜。、DATA [DATA $ Z == 100、]、平均)tmp2 =集計(Y〜。、DATA [DATA $ Z == 50、]、平均)tmp1 $ X2 = tmp2 $ X tmp1 $ Y2 = tmp2 $ Y graphics.off()ggplot(DATA、aes(x = factor(X)、y = Y、fill = Z))+ geom_boxplot(width = 0.5、outlier.shape = NA)+ geom_segment(data = tmp1、aes(x = as.numeric(factor(X))-0.125、y = Y、xend = as.numeric(factor(X2))+ 0.125、yend = Y2))+ facet_grid(Gp〜Fc)

ここに画像の説明を入力してください