ggplot2 boxplot对齐绘制一个图

时间:2012-11-14 21:31:59

标签: r ggplot2 boxplot

我正在努力从数据框中绘制一个箱线图。我的数据框df包含3列:df$Adf$Bdf$C。我希望在X轴上有df$C,并在一个图表中将df$Adf$B绘制为Y轴上的箱线图。因此,对于x轴的每个值,它应该是两个值df$Adf$B。我希望为X轴的每个值(df$C)对齐方框。我尝试使用互动功能将(AB)合并到列中,然后将其绘制成如下图:

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   

1 个答案:

答案 0 :(得分: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")

横杆表示数据的范围和平均值。 enter image description here