R 如何将多个箱线图添加到同一轴集

R 如何将多个箱线图添加到同一轴集,r,lattice,bwplot,R,Lattice,Bwplot,我试着在同一组轴上绘制4组数据作为箱线图。 我已经能够使用print()函数在单独的绘图上绘制它们,但无法找出如何将它们全部绘制在一起,最好使用基本包或晶格 下面是我正在尝试的一些代码,但总是出现错误: Error in x[floor(d)] + x[ceiling(d)] : non-numeric argument to binary operator 以下是我目前正在尝试的代码: Summer <- SeasonalMax$Summer Autumn <- Seasonal

我试着在同一组轴上绘制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"))

Summer首先将数据转换为长格式

# 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))
或三分包

library(tidyr)
gather(Dat,key="Season",value="Value")
然后在绘制箱线图时,使用公式参数,如下所示 [我将继续使用tidyr,因为我命名了列]

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

首先将数据转换成长格式

# 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))
或三分包

library(tidyr)
gather(Dat,key="Season",value="Value")
然后在绘制箱线图时,使用公式参数,如下所示 [我将继续使用tidyr,因为我命名了列]

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

您可以使用
ggplot2
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() 

库(data.table)
图书馆(GG2)

dat您可以使用
ggplot2
数据。表
,我认为更简单,代码如下:

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() 

库(data.table)
图书馆(GG2)

dat您的代码按预期为我工作:。也许我误解了你的问题?你的代码对我来说就像预期的那样。也许我误解了你的问题?当我使用gather()函数时,我得到一条消息“警告消息:度量变量之间的属性不相同;他们将被丢弃。。。如果我忽略它,我的输出箱线图是不正确的,你知道为什么吗?当你使用我在这个答案中建议的示例data.frame时会发生这种情况,还是使用你自己的数据?如果这是你自己的数据,请张贴一个样本。这很可能是由于数据框中存在其他变量。如果有另一个变量不希望包含在收集过程中,请执行以下操作:
gather(Dat,key=“seasure”,value=“value”,-unwantedVariable1,-unwantedvariable2)
。您可以根据需要添加任意数量的
-variable
参数当我使用gather()函数时,我会收到消息“警告消息:度量变量的属性不相同;他们将被丢弃。。。如果我忽略它,我的输出箱线图是不正确的,你知道为什么吗?当你使用我在这个答案中建议的示例data.frame时会发生这种情况,还是使用你自己的数据?如果这是你自己的数据,请张贴一个样本。这很可能是由于数据框中存在其他变量。如果有另一个变量不希望包含在收集过程中,请执行以下操作:
gather(Dat,key=“seasure”,value=“value”,-unwantedVariable1,-unwantedvariable2)
。您可以根据需要添加任意多个
-variable
参数