R ggplot - 错误stat_bin需要连续的x变量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R ggplot - 错误stat_bin需要连续的x变量相关的知识,希望对你有一定的参考价值。
我的表是data.combined,结构如下:
'data.frame': 1309 obs. of 12 variables:
$ Survived: Factor w/ 3 levels "0","1","None": 1 2 2 2 1 1 1 1 2 2 ...
$ Pclass : Factor w/ 3 levels "1","2","3": 3 1 3 1 3 3 1 3 3 2 ...
$ Name : Factor w/ 1307 levels "Abbing, Mr. Anthony",..: 109 191 358 277 16 559 520 629 417 581 ...
$ Sex : num 2 1 1 1 2 2 2 2 1 1 ...
$ Age : num 22 38 26 35 35 NA 54 2 27 14 ...
$ SibSp : int 1 1 0 1 0 0 0 3 0 1 ...
$ Parch : int 0 0 0 0 0 0 0 1 2 0 ...
$ Ticket : Factor w/ 929 levels "110152","110413",..: 524 597 670 50 473 276 86 396 345 133 ...
$ Fare : num 7.25 71.28 7.92 53.1 8.05 ...
$ Cabin : Factor w/ 187 levels "","A10","A14",..: 1 83 1 57 1 1 131 1 1 1 ...
$ Embarked: Factor w/ 4 levels "","C","Q","S": 4 2 4 4 4 3 4 4 4 2 ...
$ Title : Factor w/ 4 levels "Master.","Miss.",..: 3 3 2 3 3 3 3 1 3 3 ...
我想绘制一个图表来反映Title和Survived之间的关系,按Pclass分类。我使用了以下代码:
ggplot(data.combined[1:891,], aes(x=Title, fill = Survived)) +
geom_histogram(binwidth = 0.5) +
facet_wrap(~Pclass) +
ggtitle ("Pclass") +
xlab("Title") +
ylab("Total count") +
labs(fill = "Survived")
但是这会导致错误:Error: StatBin requires a continuous x variable the x variable is discrete. Perhaps you want stat="count"?
如果我将变量Title更改为numeric:data.combined$Title <- as.numeric(data.combined$Title)
,则代码可以工作,但图中的标签也是数字(下图)。请告诉我它为什么会发生以及如何解决它。谢谢。
顺便说一句,我在Mac El Capital上使用R 3.2.3。
图:x轴没有先生,而是x轴显示数字值1,2,3,4
总结上述评论的答案:
1 - 用geom_histogram(binwidth=0.5)
替换geom_bar()
。但是这种方式不允许进行binwidth定制。
2 - 使用stat_count(width = 0.5)
而不是geom_bar()
或geom_histogram(binwidth = 0.5)
将解决它。
extractTitle <- function(Name) {
Name <- as.character(Name)
if (length(grep("Miss.", Name)) > 0) {
return ("Miss.")
} else if (length(grep("Master.", Name)) > 0) {
return ("Master.")
} else if (length(grep("Mrs.", Name)) > 0) {
return ("Mrs.")
} else if (length(grep("Mr.", Name)) > 0) {
return ("Mr.")
} else {
return ("Other")
}
}
titles <- NULL
for (i in 1:nrow(data.combined)){
titles <- c(titles, extractTitle(data.combined[i, "Name"]))
}
data.combined$title <- as.factor(titles)
ggplot(data.combined[1:892,], aes(x = title, fill = Survived))+
geom_bar(width = 0.5) +
facet_wrap("Pclass")+
xlab("Pclass")+
ylab("total count")+
labs(fill = "Survived")
如上所述使用geom_bar()而不是geom_histogram,请参考下面给出的示例代码(我希望每个月出生日期数据的单独图表):
ggplot(data = pf,aes(x=dob_day))+
geom_bar()+
scale_x_discrete(breaks = 1:31)+
facet_wrap(~dob_month,ncol = 3)
我有同样的问题,但上述解决方案都没有奏效。然后我注意到我想用于直方图的数据框的列不是数字:
df$variable<- as.numeric(as.character(df$variable))
取自here
以上是关于R ggplot - 错误stat_bin需要连续的x变量的主要内容,如果未能解决你的问题,请参考以下文章
计算 ggplot stat_summary2d 和 stat_bin2d 的表面积
R语言ggplot2可视化:自定义设置连续变量图例(legend)宽度(width)自定义设置连续变量图例位置(position)自定义设置连续变量图例连续渐变