问题描述
以下代码返回
错误:将离散值提供给连续刻度
由于miss
列没有任何数据。这似乎暗示着其中一根轴是离散的(这是不正确的),因此不接受数值。
如何防止该轴离散?
library(ggplot2)
data <- data.frame(c(1,2,3),c(4,5,6),c(NA,NA,NA))
colnames(data) <- c("x","y","miss")
plot <- ggplot(data,aes(x = x,y = y)) +
scale_x_continuous() +
scale_y_continuous() +
geom_ribbon(aes(ymin = y - 1,ymax = y + 1)) +
geom_rect(aes(xmin = miss,xmax = miss,ymin = miss,ymax = miss))
print(plot)
解决方法
创建data$miss
之类的向量并仅填充NA
值时,类型默认为"logical"
类。实际上,创建空向量时也是如此。
> class(vector())
[1] "logical"
如果逐行删除绘图代码,您会发现问题出在geom_rect()
行,这很有意义:您正在要求将美学赋予逻辑值({{ 1}}),而不是数字值。
要解决此问题,只需让R知道data$miss
是数字:
data$miss
这可以解决您的问题,并且绘图工作正常-您将仅收到以下警告消息,并且显然将无法看到rect geom:
data$miss <- as.numeric(data$miss)