【问题标题】:How do I put multiple boxplots in the same graph in R?如何将多个箱线图放在 R 的同一张图中?
【发布时间】:2015-08-29 03:18:22
【问题描述】:

抱歉,我没有此问题的示例代码。

我只想知道是否可以在 R 中创建多个并排的箱线图,表示我的数据框中的不同列/变量。每个箱线图也只代表一个变量——我想将 y 比例设置为 (0,6) 的范围。

如果这不可能,如果我只想使用单个变量创建箱线图,我该如何使用 ggplot2 中的面板选项?谢谢!

理想情况下,我想要如下图所示的内容,但没有 ggplot2 中的因子分组。同样,每个箱线图将代表完全独立的单列。

【问题讨论】:

    标签: r plot ggplot2 rstudio boxplot


    【解决方案1】:

    如果你reshape你的数据变成长格式,你可以这样做

    ## Some sample data
    dat <- data.frame(a=rnorm(100), b=rnorm(100), c=rnorm(100))
    
    ## Reshape data wide -> long
    library(reshape2)
    long <- melt(dat)
    plot(value ~ variable, data=long)
    

    【讨论】:

    • 谢谢,@LegalizeIt!我最终使用 tidyr 将我的数据重塑为一个长 df:library(tidyr) long &lt;- gather(team1, variable, value, var1:var44) plot(value~variable,data=long) 但最终得到了这个看起来很奇怪的情节:tinypic.com/r/2rn77no/8 ... 因为我有 40 多个情节,所以我试图挤在一起,这是我最初的目标没有实际意义?如果是这样,我可能会切换到面板图。
    【解决方案2】:

    ggplot2 要求在 y 轴上绘制的数据都在一列中。

    这是一个例子:

    set.seed(1)
    df <- data.frame(
      value = runif(810,0,6),
      group = 1:9
    )
    
    df
    
    library(ggplot2)
    ggplot(df, aes(factor(group), value)) + geom_boxplot() + coord_cartesian(ylim = c(0,6)
    

    ylim(0,6) 将 y 轴设置在 0 到 6 之间

    如果您的数据在列中,您可以使用来自reshape2melt 或来自tidyrgather 将它们放入长格式。 (也可以使用其他方法)。

    【讨论】:

    • 注意:对于 ggplot2 ylim() 子集数据,用于显示箱线图。改用coord_cartesian(ylim = )
    • 谢谢,@jalapic!所以我最终根据您的建议使用了 tidyr 和 ggplot2:long &lt;- gather(team1, variable, value, var1:var44) ggplot(long, aes(factor(variable), value)) + geom_boxplot() + coord_cartesian(ylim = c(0,6)),但最终得到了这个看起来很奇怪的情节:tinypic.com/r/261z0qg/8。我认为我只是有太多变量,这看起来相当不错。在这种情况下,是否有任何调整大小的选项,或者我应该放弃并使用面板图?再次感谢!
    猜你喜欢
    • 2023-01-31
    • 1970-01-01
    • 2020-12-03
    • 2013-01-14
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多