如何修复 r 错误:连续尺度上提供的离散值


在 R 中您可能遇到的错误是:

 Error: Discrete value supplied to continuous scale

当您尝试对 ggplot2 中的轴应用连续刻度且该轴上的变量不是数字时,会发生此错误。

本教程准确解释了如何修复此错误。

如何重现错误

假设我们在 R 中有以下数据框:

 #create data frame
df = data. frame (x = 1:12,
                y = rep(c('1', '2', '3', '4'), times= 3 ))

#view data frame
df

    xy
1 1 1
2 2 2
3 3 3
4 4 4
5 5 1
6 6 2
7 7 3
8 8 4
9 9 1
10 10 2
11 11 3
12 12 4

现在假设我们尝试使用scale_y_continuous()参数创建具有自定义 y 轴刻度的散点图:

 library (ggplot2)

#attempt to create scatterplot with custom y-axis scale
ggplot(df, aes (x, y)) +
  geom_point() +
  scale_y_continuous(limits = c(0, 10))

Error: Discrete value supplied to continuous scale

我们收到错误,因为我们的 Y 轴变量是字符而不是数字变量。

我们可以使用class( ) 函数来确认这一点:

 #check class of y variable
class(df$y)

[1] “character”

如何修复错误

修复此错误的最简单方法是在创建散点图之前将 Y 轴变量转换为数值变量:

 library (ggplot2) 

#convert y variable to numeric
df$y <- as. numeric (df$y)

#create scatterplot with custom y-axis scale
ggplot(df, aes (x, y)) +
  geom_point() +
  scale_y_continuous(limits = c(0, 10))

请注意,我们没有收到任何错误,因为我们将scale_y_continuous()与数字变量而不是字符变量一起使用。

您可以在此处找到有关scale_y_continuous()函数的完整在线文档。

其他资源

以下教程解释了如何在 ggplot2 中执行其他常见绘图功能:

如何在ggplot2中设置轴中断
如何删除ggplot2中的轴标签
如何在ggplot2中旋转轴标签

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注