在默认数据集mtcars和ggplot2的示例中,出现了"Error: Continuous value supplied to discrete scale"的错误。

37

我正在尝试使用以下代码来复制这里的例子(sthda.com):

# Change point shapes and colors manually
ggplot(mtcars, aes(x=wt, y=mpg, color=cyl, shape=cyl)) +
  geom_point() + 
  geom_smooth(method=lm, se=FALSE, fullrange=TRUE)+
  scale_shape_manual(values=c(3, 16, 17))+ 
  scale_color_manual(values=c('#999999','#E69F00', '#56B4E9'))+
  theme(legend.position="top")

那个网页上的示例表明这段代码应该产生以下结果:

plot

但是当我在R中运行它时,我得到了以下错误:

"Error: Continuous value supplied to discrete scale"

有人知道这段代码可能出了什么问题吗?或者为什么我的结果与示例不同?

如果有人能运行示例代码并告诉我是否遇到相同的错误,我将非常感激。


5
准备数据部分中你错过了这一行代码:mtcars$cyl <- as.factor(mtcars$cyl)。请注意补充该行代码,以便后续操作能够正常进行。 - rawr
1
如果你知道cyl不是一个因子,只需使用factor(mtcars$cyl) - PatrickT
2个回答

42

是的,我通过将颜色和形状美学转换为因子来解决了它。

ggplot(mtcars, aes(x=wt, y=mpg, color=as.factor(cyl), shape=as.factor(cyl))) +
  geom_point() + 
  geom_smooth(method=lm, se=FALSE, fullrange=TRUE)+
  scale_shape_manual(values=c(3, 16, 17))+ 
  scale_color_manual(values=c('#999999','#E69F00', '#56B4E9'))+
  theme(legend.position="top")

19
请注意,否则每个人都需要花时间查看两个代码并尝试找到差异。您在colorshape中添加了as.factor - PM0087

17

转化为因子,代码就可以工作了。

ggplot(mtcars, aes(x=wt, y=mpg, color=as.factor(cyl), shape=as.factor(cyl))) +
  geom_point() + 
  geom_smooth(method=lm, se=FALSE, fullrange=TRUE)+
  scale_shape_manual(values=c(3, 16, 17))+ 
  scale_color_manual(values=c('#999999','#E69F00', '#56B4E9'))+
  theme(legend.position="top")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接