R中的组箱图轴名称

问题描述 投票:0回答:1

我正在使用显示为多个箱形图的数据集。我已根据测量周将箱形图进行了手动分组,以使其成组对齐。但是,在轴上排列每个单独的测量日期会使该特定轴不可读。

因此,我想将特定的所有x轴标签分组到“周#”。enter image description here

代码基于boxplot命令。

boxplot(dfswe, ylab ='SWE [mm]', xlab ='Time', las = 2, main ='SWE over time', 
        col = colcolours[1:34],
        at = c(1,4,5,6,7,8,9,10,11,14,15,16,17,20,21,22,23,26,27,28,29,32,33,34,35,36,37,38,39,40,43,44,47,50),
        names = colcolours[1:34]) 

dfswe是由34列组成的简单数据框。

我曾尝试过将框线图分组在一起的其他技术,但还没有找到处理不规则分组的方法。有些星期比其他星期包含更多测量值。

dput:

dput(droplevels(dfswe))结构(列表(07/02/2019 = c(82.68852496,84.32592149,90.05680936,81.05112843,NA,NA),11/02/2019 = c(91.6942059,79.41373189,91.6942059,79.41373189,NA,NA),11/02/2019 = c(63.03976655,72.86414576、72.86414576、73.68284402、78.59503363、70.40805096),13/02/2019 = c(72.86414576,72.86414576,87.60071456,87.60071456,NA,NA),13/02/2019 = c(87.60071456,100.6998868,88.41941283,88.41941283、81.05112843,NA),13/02/2019 = c(75.32024056,68.77065442、74.50154229、74.50154229、62.22106829、58.94627522),13/02/2019 = c(86.78201629,76.13893882,72.86414576,NA,NA,NA),16/02/2019 = c(46.39290179,48.84899659,50.75929255,NA,NA,NA),16/02/2019 = c(45.84710295,48.30319775,57.30887869,34.38532721,27.50826177,NA),19/02/2019 = c(79.41373189,71.22674922、62.22106829、54.85278388、27.01704281,NA),19/02/2019 = c(27.83574108,43.39100815、44.20970641、55.67148215,NA,NA),19/02/2019 = c(17.19266361,24.56094801,0,NA,NA,NA),19/02/2019 = c(34.38532721,NA,NA,NA,NA,NA),20/02/2019 = c(77.77633536,65.49586135,62.22106829,22.92355147,NA,NA),20/02/2019 = c(22.92355147,15.55526707,NA,NA,NA,NA),20/02/2019 = c(28.65443934,35.20402548,42.57230988,54.03408562,NA,NA),20/02/2019 = c(14.7365688,22.10485321,NA,NA,NA,NA),26/02/2019 = c(85.96331803,72.86414576,76.13893882,49.12189602,29.47313761,NA),26/02/2019 = c(0,0,0,0,0,NA),26/02/2019 = c(0,0,0,0,0,NA),26/02/2019 = c(0,0,0,0,0,NA),04/03/2019 = c(28.65443934,32.74793068,39.29751681,44.20970641,NA,NA),06/03/2019 = c(88.41941283,85.96331803,76.95763709,29.47313761,38.47881855,NA),06/03/2019 = c(3.192923241,3.192923241、3.192923241、3.192923241,NA,NA),06/03/2019 = c(3.192923241,3.192923241、25.78899541、3.192923241、49.12189602,NA),06/03/2019 = c(3.192923241,3.192923241、3.192923241、3.192923241,NA,NA),08/03/2019 = c(85.96331803,82.68852496、70.40805096、67.95195616、27.83574108,NA),08/03/2019 = c(15.55526707,18.83006014、11.46177574、10.64307747,NA,NA),08/03/2019 = c(16.37396534,22.10485321、13.09917227、11.46177574,NA,NA),11/03/2019 = c(112.9803608,103.9746799、98.24379203、50.75929255、29.47313761,NA),11/03/2019 = c(25.37964627,24.56094801,21.28615494,19.64875841,NA,NA),11/03/2019 = c(28.65443934,22.92355147、19.64875841、19.64875841,NA,NA),18/03/2019 = c(139.1787054,130.9917227、129.3543262、54.03408562、34.38532721,NA),28/03/2019 = c(110.524266,115.4364556,81.86982669,0,0,NA)),row.names = c(NA,-6L),class =“ data.frame”)

r label axis boxplot
1个回答
0
投票

这里是使用tidyverse的解决方案:

# library
library(lubridate)
library(tidyverse)

# add week # as group
dfswe<- dfswe %>% 
  mutate(week=lubridate::week(dmy(date))) #you have to adjust dmy to your actual data

# draw plot
ggplot(aes(x=week, y=SWE, fill=factor(colcolours))) + #change y according to your actual data
  geom_boxplot() +
  labs(title="SWE over time",
       x ="TIME [Week # of 2020]",
       y = "SWE [mm]") +
  guides(fill=FALSE) 
© www.soinside.com 2019 - 2024. All rights reserved.