我是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“,等等
我不明白我如何在我的代码中引用(和显示)。
谢谢
答案 0 :(得分:0)
一般解决方案是禁止bxp
创建标签(show.names = FALSE
),然后使用boxplot
或bxp
的返回值将其添加到自己中标签沿轴的位置。
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))
如果您在?boxplot
下查看,您会看到此示例正在使用boxplot
。它有更多有趣的返回值。也就是说,在您的数据中,您提供的是stats
和n
,即bx.p
的前两个值。
您bxp
stats
和n
显然只需要stats.data
和set.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}}
它应该为你填写名称。