簡體   English   中英

使用基本R函數的帶有多個因子標簽的箱線圖

[英]boxplot with multiple factor labels using base R functions

一個怎么可能重現ggplot-based boxplot中所示的這個答案 ,但使用base R boxplot function

來自以上鏈接的樣本日期:

d<-data.frame(x=rnorm(1500),f1=rep(seq(1:20),75),f2=rep(letters[1:3],500))
# first factor has 20+ levels
d$f1<-factor(d$f1)
# second factor a,b,c
d$f2<-factor(d$f2)

boxplot(x~f2*f1,data=d,col=c("red","blue","green"),frame.plot=TRUE,axes=FALSE)

如果x-axis的組彼此間隔開,那就太好了。

我對ggplot2了解ggplot2

編輯

在等待使用基本R函數的更多建議時,我在ggplot2方面取得了一些進展。

使用此示例數據,如何生成上面的鏈接中的x-axis對齊良好的圖?

以下內容並沒有給我正確的對齊方式(我希望數字1:8在每個組的中心對齊):

library(ggplot2)
ggplot(dat3, aes(x = ID, y = value,  group=interaction(obs, ID), fill=obs)) +
  geom_boxplot() +
  scale_fill_manual(values = c("yellow", "orange"))


    dat3=structure(list(values = c(0, 0, 0, 0, 0, 0, 0, 0, -0.0169491525423729, 
0, 0, 0, 0, 1, 1, 0.64367816091954, 0.64367816091954, 0, 0, -0.0163934426229508, 
-0.021978021978022, 0.109195402298851, 0, 0, 0, 0, 0.207650273224044, 
0.4375, 0, 0, 0, 0, 0.302325581395349, 0.303370786516854, 0.270588235294118, 
-0.0188679245283019, 0.156462585034014, 0.092436974789916, 0.69, 
-0.021978021978022, 0.64367816091954, 0.614906832298137, 0.612903225806452, 
0.274853801169591, 0, 0.303370786516854, 0, 0, -0.03125, 0.229813664596273, 
0.557142857142857, 0, 0.109195402298851, 0.0746268656716418, 
0.180616740088106, 0.210526315789474, 0.310344827586207, 1, 1, 
0.0825688073394495, 0.294117647058824, 0, 0.4375, 0, 0.230769230769231, 
0.347826086956522, -0.0163934426229508, 0.156462585034014, 0, 
0, 0, 1, 0, 0, 0, 0.483333333333333, 0.483333333333333, 0, 0, 
0, 0, 0, -0.0169491525423729, 0, 0.310344827586207, 0, 0.296875, 
0.302325581395349, 0, 0, 0, 0, 0, 0, 0.482758620689655, 0, 0, 
0, 0, 0, 0, 0, 0, 0.150684931506849, 0.150684931506849, 0, 0, 
-0.021978021978022, -0.021978021978022, 0.270588235294118, 0, 
0, 0.482758620689655, 0.482758620689655, 0.272727272727273, 0.272727272727273, 
0, 1, 0, 0, 0.642857142857143, 0.211864406779661, 0.156462585034014, 
-0.0449438202247191, -0.0449438202247191, 0.389763779527559, 
0.389763779527559, -0.021978021978022, 0.211864406779661, 0.213197969543147, 
0.213197969543147, 0.358620689655172, -0.0163934426229508, 0.483333333333333, 
0, 0, 0.362139917695473, 0.362139917695473, 0.261904761904762, 
0.483333333333333, 1, 1, 0.236453201970443, 0.302325581395349, 
0.310344827586207, 1, 1, 0.358974358974359, 0.358974358974359, 
-0.0606060606060606, 0.0721649484536082, 0.615384615384615, 0.615384615384615, 
0.347826086956522, 1, 0, 0, 0, -0.0273972602739726, -0.0273972602739726, 
-0.0169491525423729, -0.0256410256410256, 0.107142857142857, 
0.107142857142857, 0.302325581395349, -0.0163934426229508, -0.0264900662251656, 
0.311111111111111, 0.311111111111111, 0.156462585034014, 0.156462585034014, 
-0.0483091787439614, 0.311111111111111, -0.0333333333333333, 
-0.0333333333333333, 0.311111111111111), ind = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 
8L, 8L, 8L, 8L, 8L, 8L, 8L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 
6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 
7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L), .Label = c("ETS", 
"ETS.1", "ETS.2", "ETS.3", "ETS.4", "ETS.5", "ETS.6", "ETS.7"
), class = "factor"), ID = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 
4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 
7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 
8L, 8L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 5L, 5L, 
5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
6L, 6L, 6L, 6L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 8L, 
8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L, 8L), .Label = c("4", "5", 
"6", "7", "8", "9", "10", "11"), class = "factor"), obs = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), .Label = c("obs", 
"capa"), class = "factor")), .Names = c("values", "ind", "ID", 
"obs"), row.names = c(NA, 176L), class = "data.frame")

您可以使用at選項指定框的位置。

set.seed(1)
d<-data.frame(x=rnorm(1500),f1=rep(seq(1:20),75),f2=rep(letters[1:3],500))
# first factor has 20+ levels
d$f1<-factor(d$f1)
# second factor a,b,c
d$f2<-factor(d$f2)
boxplot(x~f2*f1,data=d, at = (1:80)[-4*(1:20)], col=c("red","blue","green"),frame.plot=TRUE,axes=FALSE)
axis(1,at=seq(2,80,4),labels=1:20,cex.axis=0.7)

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM