1

我正在尝试将 4 组数据绘制为同一组轴上的箱线图。我已经能够使用该print()函数将它们绘制在单独的图上,但无法弄清楚如何将它们全部绘制在一起,最好使用基本包或格子

下面是我正在尝试的一些代码,但它不断出现错误:

Error in x[floor(d)] + x[ceiling(d)] :
non-numeric argument to binary operator

这是我目前正在尝试的代码:

Summer <- SeasonalMax$Summer
Autumn <- SeasonalMax$Autumn
Winter <- SeasonalMax$Winter
Spring <- SeasonalMax$Spring

boxplot(Summer, Autumn, Winter, Spring,
    main = "Multiple boxplots for comparision",
    at = c(1,2,3,4),
    names = c("Summer", "Autumn", "Winter", "Spring"),
    las = 2,
    col = c("red","orange", "blue", "pink"))
4

2 回答 2

0

您可以使用ggplot2and data.table,我认为它更容易,这里是代码:

library(data.table)
library(ggplot2)
dat <- data.table(Spring = c(runif(9,0,1),2),
                  Summer = runif(10,0,1),
                  Autumn = runif(10,0,1),
                  Winter = runif(10,0,1))
dat1 = melt(dat)

ggplot(data=dat1,aes(x=variable,y=value)) +geom_boxplot(outlier.colour = "red")
ggplot(data=dat1,aes(x=variable,y=value,colour=variable)) +geom_boxplot() 

分组箱线图

于 2019-05-22T01:37:01.760 回答
0

首先将数据融合成长格式

# Dummy dataset
Dat <- data.frame(Spring = runif(10,0,1),
           Summer = runif(10,0,1),
           Autumn = runif(10,0,1),
           Winter = runif(10,0,1))

然后使用以下任一方法将数据融合为长格式:reshape2 包

library(reshape2)
melt(Dat)

或 tidyr 包

library(tidyr)
gather(Dat,key="Season",value="Value")

然后当你绘制箱线图时,使用公式参数如下[我将继续使用 tidyr,因为我命名了列]

Dat2 <- gather(Dat,key="Season",value="Value")
with(Dat2,boxplot(Value~Season))

加上你所有的补充

with(Dat2,boxplot(Value~Season,
     main = "Multiple boxplots for comparision",
     at = c(1,2,4,5),
     names = c("Summer", "Autumn", "Winter", "Spring"),
     las = 2,
     col = c("red","orange", "blue", "pink")))
于 2019-05-22T00:43:35.680 回答