使用ggplot绘制多个箱线图

5

我有一个数据框,看起来像附件中的那样,有6列和1000行(使用制表符分隔)。列标题(0、30、60、120、240和360)是时间序列(0表示0分钟,30表示30分钟等等)。我想在一个单独的绘图中使用ggplot2创建对应于这些列的6个箱形图,并根据时间差距进行间隔。似乎我需要使列融合,但无法找到一种方法。非常感谢任何帮助。

        0       30       60       120      240     360
1       1       NA       NA       NA       1       1
2       NA      NA       NA       NA       NA      NA
3       NA      NA       1        1        1       1
4       0.5     0.21     0.15     1        0.38    0.8
5       0.63    1        0.86     0.85     0.94    0.91
1个回答

7
你尝试过只使用melt吗?
library(reshape2)
ggplot(melt(df), aes(variable, value)) + geom_boxplot()

enter image description here


谢谢Senor。这个绘图的问题解决了。但是怎么改变x轴刻度的宽度呢?我想让0、30和60更接近一些(因为它们只相差30分钟),而后面的时间点则会更加分散,因为它们之间的时间间隔更大。 - user2701186
1
你需要将 df$variable 转换为 numeric(它现在是一个 factor),然后在 ggplot 中使用 aes(..., group=variable)。例如:https://dev59.com/tGgv5IYBdhLWcg3wKtlB - Señor O
@Señor O,您如何按照数据框的中位数对箱线图进行排序,以便将最低的放在最左边,最高的放在最右边? - Jeni
1
@ Jeni,这是7年前的事情了,但我认为你将不得不使用因子来处理x变量,然后将中位数排名分配给它们的值/级别,或者只是以其中位数命名该变量。 - Señor O

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接