存在分类变量的组合但在geom_boxplot中没有绘制

时间:2018-03-21 12:58:31

标签: r ggplot2

我想生成一个连续变量(N)的箱线图,而不是按另一个因子(A有2个等级)分组的分类变量(BL)

所以,当我使用以下代码时:

data$BL <-factor (data$BL, labels =c("0", "1" , "2"))
data$A <- factor (data$A, labels = c("0", "1"))

plot1 <- ggplot(data=data, aes(x = BL , y = N, fill = A)) +
    geom_boxplot()
plot1

我最终没有0合0的方框... 我从数据集中知道有0-0组合的个人..那么为什么没有显示框?

非常感谢任何建议和意见 感谢

3 个答案:

答案 0 :(得分:0)

请注意,由于您没有提供任何示例数据,因此尝试调试数据的内容是一种猜谜游戏。最好始终提供包含样本数据的reproducible & minimal example

在以下示例中,我生成了一些示例数据。

set.seed(2017);
N <- 60;
data <- data.frame(
    N = sample(1:60, N),
    BL = sample(rep(c("0", "1", "2"), each = N / 3)),
    A = sample(rep(c("0", "1"), each = N / 2)));

显示不同N群组的BL分布:

library(ggplot2);
ggplot(data, aes(x = BL, y = N)) + geom_boxplot();

enter image description here

显示不同NBL群组的A分布:

ggplot(data, aes(x = BL, y = N, fill = A)) + geom_boxplot();

enter image description here

答案 1 :(得分:0)

似乎所有组合BL = 0和A = 0的人都有相同的N值。你能检查一下是不是这样吗?

如果是这种情况,带有代码和模拟数据的图表将如下所示: enter image description here

因为否则,具有完全代码和数据的情节(其中N因组合0-0的个体而异)看起来很好:

enter image description here

以下是代码:

library(ggplot2)
data <- data.frame(BL = c(0,0,1,1,2,2),
                   A = c(0,1,0,1,0,1),
                   N = c(1:30))
data$BL <-factor (data$BL, labels =c("0", "1" , "2"))
data$A <- factor (data$A, labels = c("0", "1"))

ggplot(data=data, aes(x = BL , y = N, fill = A)) +
  geom_boxplot()

答案 2 :(得分:0)

如果以下代码产生了所需的结果,请检查一下:

data$BL <- as.factor(data$BL)
data$A <- as.factor(data$A)
ggplot(data=data, aes(x = BL , y = N, fill = A)) +
  geom_boxplot()

如果您提供级别的顺序与级别在数据中的显示顺序不同,那么将BL和A转换为因子的方式会使数据混乱。