【问题标题】:ggplot2 boxplot aligned plotting one graphggplot2箱线图对齐绘制一张图
【发布时间】:2012-11-16 03:40:58
【问题描述】:

我正在努力从数据框中绘制箱线图。我有一个包含 3 列的数据框 df:df$Adf$Bdf$C。我想在 X 轴上有 df$C 并在一张图中将 df$Adf$B 绘制为 Y 轴上的箱线图。因此,对于 x 轴的每个值,它应该是两个值 df$Adf$B。我想让框为 X 轴的每个值对齐 (df$C)。我尝试使用交互将 (A,B) 组合在列中,然后像这样绘制它:

df$AandB <- interaction(df$A, df$fB)

ggplot(aes(y = AandB, x = df$C), data = df) + geom_boxplot()

但它不起作用。它只显示了水平线 - 抱歉,我是新用户,无法上传图片。

我找到了一些使用填充或颜色的建议,但没有奏效。

有什么建议吗?

我的 df 样本:

  A         B         C  
 200.12    30.11       28.75 
 100.75    26.17       29.98        
 27.33      25.58      34.98 
 25.19      22.6       35.56 
 40.03      21.02      37.51 
 20.3       18.31      44.75   

【问题讨论】:

  • 请提供一些关于您的数据的附加信息。 str(df) 的输出是什么?你能提供dput(df)的输出吗?
  • 我已经包含了输出 df !!!
  • 在您的示例数据中,C 的每个唯一值都恰好有一个 A 值和一个值 B。你在找什么样的盒子?
  • 我想为 C 的每个唯一值绘制一个框,A 和 B 相互对齐以显示差异。方框应包含平均值。

标签: r ggplot2 boxplot


【解决方案1】:

数据:

df <- read.table(text="A         B         C  
200.12    30.11       28.75 
100.75    26.17       29.98        
27.33      25.58      34.98 
25.19      22.6       35.56 
40.03      21.02      37.51 
20.3       18.31      44.75", header = TRUE)

首先,数据需要以长格式排列。 AB 的值与 reshape2 包合并在一列中。

library(reshape2)
df_l <- melt(df, id.vars = "C")

现在,可以创建情节了:

library(ggplot2)
ggplot(df_l, aes(x = C, y = value)) + 
  stat_summary(aes(group = C),
               fun.y = mean, fun.ymin = min, fun.ymax = max, geom = "crossbar")

横线表示数据的范围和平均值。

【讨论】:

  • 您似乎将 A 和 B 都绘制在一个箱形图中。我在寻找每个单个 C 值,两个框:一个用于 A,另一个用于 B(偏移量 = 0)。因此,我希望上述数据有 12 个框,每两个(框 A 和框 B)将映射到 C 值。另外,我需要为每个趋势(A,B)添加图例和颜色。为了减少框之间的偏移,我想我可以使用 geom_jitter (geom_jitter(position=position_jitter(width=0)) )。
猜你喜欢
  • 2013-01-14
  • 1970-01-01
  • 2023-03-24
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
相关资源
最近更新 更多