Boxplot用于一个图表中的两个不同数据

时间:2012-11-18 04:10:03

标签: r ggplot2 boxplot

我的数据框df包含2列:AB

我希望在Y轴上有一个包含AB的图表。注意:我不想将AB合并。他们每个人都有自己的结果。

因此,所需的输出应包含x轴的每个单独值,两个框(一个用于A,一个用于B)彼此相邻(offset = 0)。

df的样本:

A      B

200.  30.        
100.  26.               
27.   25.       
25.   22.        
40.   21.       
20.   18. 

我不想使用重塑或交互。我宁愿只使用ggplot和boxplot。

ReadData<-read.csv("data.csv", header=T)
A<-ggplot(ReadData,aes(A)+
   geom_boxplot(ReadData$A)

B<-ggplot(ReadData,aes(B)+ 
   geom_boxplot(ReadData$B)

print(A)
print(B)

它不起作用?它抱怨映射aes !!! 任何劝说?

2 个答案:

答案 0 :(得分:0)

数据:

df <- read.table(text="A      B
200.  30.        
100.  26.               
27.   25.       
25.   22.        
40.   21.       
20.   18. ", header = TRUE)

以下代码生成条形图。无法生成具有单个值的箱线图。

library(ggplot2)

ggplot(stack(df), aes(x = rownames(df), y = values, fill = ind)) + 
  geom_bar(stat="identity", position="dodge")

enter image description here

答案 1 :(得分:0)

以先前的答案为基础,并生成箱线图

df <- read.table(text="A      B
200.  30.        
100.  26.               
27.   25.       
25.   22.        
40.   21.       
20.   18. ", header = TRUE)

ggplot(
    data = df %>% 
      pivot_longer( 
        cols = c(A, B),
        names_to = "x",
        values_to = "y",
      ),
    aes(x = x, y = y, fill = x)) +
  geom_boxplot(outlier.colour = "red", show.legend = FALSE)

Boxplot example

您可能要对比例进行一些调整,添加抖动点等。