默认数据集示例 mtcars 和 ggplot2 中的“错误:提供给离散比例的连续值”

Posted

技术标签:

【中文标题】默认数据集示例 mtcars 和 ggplot2 中的“错误:提供给离散比例的连续值”【英文标题】:"Error: Continuous value supplied to discrete scale" in default data set example mtcars and ggplot2 【发布时间】:2017-09-07 14:46:03 【问题描述】:

我正在尝试使用以下代码复制 the example here (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")

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

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

“错误:提供给离散刻度的连续值”

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

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

【问题讨论】:

您错过了准备数据部分中的mtcars$cyl <- as.factor(mtcars$cyl) 或者只是factor(mtcars$cyl),如果你知道cyl不是一个因素。 【参考方案1】:

是的,我能够通过将颜色和形状美学转换为因素来解决它:

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")

【讨论】:

还请提及您所做的更改。否则每个人都需要花时间检查这两个代码并试图找出差异。您将as.factor 添加到colorshape【参考方案2】:

as.factor 让它发挥作用

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")

【讨论】:

以上是关于默认数据集示例 mtcars 和 ggplot2 中的“错误:提供给离散比例的连续值”的主要内容,如果未能解决你的问题,请参考以下文章

ggplot2:geom_bar 与组,position_dodge 和填充

控制从 ggplot2 中的因子变量生成的饼图中的刻度和奇数文本

R 闪亮的反应单选按钮

ggplot2 可以在一个图例中分别控制点大小和线宽(线宽)吗?

R语言数据包自带数据集之mtcars数据集字段解释数据导入实战

R mtcars 数据集,“vs”变量的含义?