如何更改bxp上的x轴标签

时间:2014-12-01 18:21:44

标签: r

我是R的新手并且想知道如何更改x轴标签。这是我的代码:

o=c(1,2,3,4,5) # the rows in increasing order
stats.data=list(stats=data.matrix(stats[o,]),n=rep(1,ncol(stats)))
# the n=... parameter doesn't affect the plot, but it still needs to be there
bxp(stats.data,log="y")

目前我看到每个刻度线上的数字1到40。相反,我希望能够从我的数据框中放置列标题,前两列看起来像这样:

  Row.Labels    OB          MFD ....
1 Minimum       0.00250 0.0380
2 25 percentile 0.00250 0.0380
3 Median        0.00725 0.0650  
4 75 percentile 0.01200 0.3010
5 Maximum       0.01200 0.3010
6 Mean          0.00725 0.1347

所以我想要的是x轴刻度读取“OB”,MFD“,等等

我不明白我如何在我的代码中引用(和显示)。

谢谢

1 个答案:

答案 0 :(得分:0)

一般解决方案是禁止bxp创建标签(show.names = FALSE),然后使用boxplotbxp的返回值将其添加到自己中标签沿轴的位置。

stats <- read.table(header = TRUE, text="Row.Labels    OB          MFD
1 Minimum         0.00250 0.0380
2 '25 percentile' 0.00250 0.0380
3 Median          0.00725 0.0650  
4 '75 percentile' 0.01200 0.3010
5 Maximum         0.01200 0.3010
6 Mean            0.00725 0.1347")[, -1]


o=c(1,2,3,4,5) # the rows in increasing order
stats.data=list(stats=data.matrix(stats[o,]),n=rep(1,ncol(stats)))

## make bxp and use the return value (position of boxes on x-axis)
(bp <- bxp(stats.data,log="y", show.names = FALSE))

# [1] 1 2

## use the generic axis function
axis(1, at = bp, labels = names(stats))

enter image description here

如果您在?boxplot下查看,您会看到此示例正在使用boxplot。它有更多有趣的返回值。也就是说,在您的数据中,您提供的是statsn,即bx.p的前两个值。

bxp

提供的statsn显然只需要stats.dataset.seed(753) (bx.p <- boxplot(split(rt(100, 4), gl(5, 20)))) # $stats # [,1] [,2] [,3] [,4] [,5] # [1,] -1.66391873 -2.02625162 -2.12785004 -2.76510496 -1.70034047 # [2,] -0.55308292 -0.65897584 -0.86705616 -1.63431484 -0.81848966 # [3,] -0.06763313 0.04887846 0.09674026 -0.06712275 -0.01150075 # [4,] 0.68813940 0.91705734 1.05562526 0.56746581 0.49017934 # [5,] 1.14222667 3.16270157 2.07574986 2.09523462 1.87734641 # # $n # [1] 20 20 20 20 20 # # $conf # [,1] [,2] [,3] [,4] [,5] # [1,] -0.5061554 -0.5079321 -0.5825407 -0.8450091 -0.4738519 # [2,] 0.3708891 0.6056890 0.7760212 0.7107636 0.4508504 # # $out # [1] 4.115274 3.224584 3.920438 4.168341 -4.357819 2.498006 # # $group # [1] 1 1 1 4 5 5 # # $names # [1] "1" "2" "3" "4" "5"
o=c(1,2,3,4,5) # the rows in increasing order
stats.data=list(stats=data.matrix(stats[o,]),n=rep(1,ncol(stats)), names = names(stats))
# the n=... parameter doesn't affect the plot, but it still needs to be there
bxp(stats.data,log="y")

所以看起来你也可以做像

这样的事情
{{1}}

它应该为你填写名称。