你在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
x y
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中旋转轴的标签
The postHow to Fix R Error:将离散值提供给连续比例出现在Statology上。