我是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)
我一直在尝试使用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()
但这是很多工作。我相信必须有一些方法可以自动完成,我无法找到。任何帮助表示赞赏。
答案 0 :(得分:3)
你是对的ggplot
要求重塑数据,但使用包reshape2
并不是很难:
library(reshape2)
df <- melt(df)
ggplot(df, aes(x=variable, y=value)) + geom_boxplot()