NA 未显示在使用 qplot 的 ggplot2 散点图中

NA not showing in ggplot2 scatterplot using qplot

我正在使用 ggplot2 中的 qplot 来制作散点图。我无法在 x 轴上看到所有值。此外,它正在从 x 轴上删除 NA。如何保留 NA 并控制 x 轴显示的特征数量?

rate_plot = qplot(Result$temp, Result$CR, main="Rate", xlab=feature, ylab="Rate", size=I(3))+
  scale_x_discrete(drop=FALSE)

数据: Google Docs link

Result <- read.table(text = "   temp    NCH type    CH  i.type  CR
1   NA  1878464 nochurn 549371  churn   0.226280204
2   1.87    2236    nochurn 4713    churn   0.678227083
3   2.14    4945    nochurn 8530    churn   0.633024119
4   2.25    423 nochurn 972 churn   0.696774194
5   2.79    3238    nochurn 7692    churn   0.703751144
6   3.25    266817  nochurn 12678   churn   0.045360382
7   3.33    2132    nochurn 4295    churn   0.668274467
8   5.1 6683    nochurn 7743    churn   0.536739221
9   6   342554  nochurn 21648   churn   0.059439542
10  6.51    1785    nochurn 4764    churn   0.727439304
11  8   13668   nochurn 22751   churn   0.624701392
12  9.85    6005    nochurn 14687   churn   0.709791224
13  11.99   378 nochurn 850 churn   0.69218241", header = TRUE)

对于自定义刻度和标签,我们可以使用 scale_x_continuous

低于警告意味着从绘图数据中删除具有 NA 值的行:

Removed 1 rows containing missing values (geom_point)

使 NA 显示在 x 轴上的解决方法,我们需要为 NA 值分配一些值,这里我在图的右端绘制 NA 值。获取 x 轴的最大值(temp 变量)然后使用自定义 x 轴标签。

library(ggplot2)

# set NA to max value + 1
plotDat <- Result
plotDat[ is.na(plotDat$temp), "temp"] <- max(ceiling(plotDat$temp), na.rm = TRUE) + 1

#plot with custom breaks and labels
ggplot(plotDat, aes(x = temp, y = CR)) +
  geom_point() +
  scale_x_continuous(breaks = 1:max(ceiling(plotDat$temp)),
                     labels = c(1:(max(ceiling(plotDat$temp)) - 1), "NA"))