使用ggplot2的R中的Boxplot

时间:2015-06-29 19:13:58

标签: r ggplot2 boxplot

我是R的新手并且一直试图制作一个箱线图。我使用的部分数据显示为

            h1          h2          h3          h4          h5          h6          h7          h8          h9         h10
1  0.003719430 0.002975544 0.003049933 0.003421876 0.003421876 0.003347487 0.003645042 0.003496264 0.007364472 0.009075410
2  0.003400540 0.002749373 0.003038781 0.003328188 0.003328188 0.003400540 0.003472892 0.003400540 0.007741656 0.009333398
3  0.003741387 0.002918282 0.003142765 0.003367248 0.003367248 0.003367248 0.003666559 0.003516904 0.008081396 0.008156223
4  0.003870634 0.002884002 0.003187581 0.003339370 0.003567055 0.003415265 0.003794739 0.003491160 0.008348426 0.007741268
5  0.003782963 0.002950711 0.003177689 0.003480326 0.003404667 0.003404667 0.003707304 0.003631645 0.008927793 0.007414608
6  0.003643736 0.002884624 0.003264180 0.003416002 0.003491913 0.003416002 0.003871469 0.003795558 0.009033428 0.007135649
7  0.003718600 0.003035592 0.003111482 0.003339151 0.003566821 0.003566821 0.003642710 0.003870380 0.008120209 0.008044319
8  0.003819313 0.002979064 0.003284609 0.003360995 0.003590154 0.003437382 0.003895699 0.003590154 0.008326102 0.007791398
9  0.003899334 0.002981844 0.003211216 0.003364131 0.003669961 0.003440589 0.003746419 0.003669961 0.008410328 0.007569295
10 0.003828488 0.002986220 0.003292499 0.003445639 0.003522209 0.003522209 0.003598778 0.003598778 0.008422673 0.007810115

当我使用默认的boxplot命令时,这就是我得到的

boxplot(df)

enter image description here

我一直在尝试使用ggplot2生成相同数据的箱线图,但它会出现我无法解决的错误。这是我尝试过的。

library(ggplot2)
df <- readRDS('data.Rda')
ggplot(df) + geom_boxplot()

这是错误

Don't know how to automatically pick scale for object of type data.frame. Defaulting to continuous
Error: Aesthetics must either be length one, or the same length as the dataProblems:df[, 6:15]

我看到了geom_boxplot的{​​{3}}并且意识到(从示例中)我需要重新排列我的数据,如

col1        col2
h1   0.003719430
h1   0.003400540
h1   0.003741387
h1   0.003870634
h1   0.003782963
h1   0.003643736
h2   0.002975544
h2   0.002749373
h2   0.002918282
h2   0.002884002
h2   0.002950711
h2   0.002884624
...

并使用类似

的内容
ggplot(df, aes(factor(col1), col2)) + geom_boxplot()

但这是很多工作。我相信必须有一些方法可以自动完成,我无法找到。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:3)

你是对的ggplot要求重塑数据,但使用包reshape2并不是很难:

library(reshape2)
df <- melt(df)
ggplot(df, aes(x=variable, y=value)) + geom_boxplot()