1

我正在尝试使用ggplot()geom_bar()

样本数据(Titanic Kaggle 问题):

PassengerId   Survived   Age
          1          0    25
          2          1    20
          3          1    40
          4          0    10

我试图显示每个年龄范围的生存和死亡堆积条(我已将年龄划分为垃圾箱)。执行命令时绘图不可见。当我添加 print() 函数时,我得到的错误是

错误:图中没有图层

请告诉我这里有什么遗漏吗?

breaks <- seq(min(train$Age), max(train$Age), 10)
p <- ggplot(train, aes(x=train$Age, y=length(train$PassengerId)), xlab = "age", ylab = "count", main = "survival", 
   fill = Survived + geom_bar(stat = "identity", bin = breaks))

print(p)

“火车”是我存储数据的对象。

4

2 回答 2

0

除了 Pascal 的提示,您可能还想:

  • 彩色列的使用因子(幸存)
  • 按照建议使用不同的 geom_bar() 和 aes() 参数

代码:

train <- data.frame(PassengerId = 1:4, Survived = factor(c(0,1,1,0)), Age = c(25, 20, 40, 10))
BIN.WIDTH <- 10
my.breaks <- seq(from = min(train$Age), to = max(train$Age) + BIN.WIDTH, by = BIN.WIDTH)
ggplot(train, aes(Age, fill = Survived)) + geom_bar(breaks = my.breaks)

阴谋:

生成的堆积图

于 2015-07-15T10:33:08.907 回答
0

这里有几个问题:

首先,您应该删除年龄为 NA 的行,否则您无法创建序列。

train<-train[!is.na(train$Age),]

然后你应该将你的 y 值更改为train$Survived(你为什么使用length(train$PassengerId)? - 它不显示任何内容)@Pascal 提到的东西也是正确的:你必须放在+ geom_bar(stat="identity", bin=breaks)外面。并且您需要在 ggplot 中以不同方式添加轴和标题。

这是完整的工作代码:

train<-train[!is.na(train$Age),]

breaks <- seq(min(train$Age), max(train$Age), 10)
p <- ggplot(train, aes(x=train$Age, y=train$Survived), 
            fill = Survived)+ geom_bar(stat="identity", bin=breaks)
p <- p+labs(x="age", y="count")

p <- p+theme(plot.title= element_text("survival"))


print(p)

此图中的结果: 在此处输入图像描述

于 2015-07-15T10:29:20.567 回答