R 中的 ggplot2 和 spline() - 错误:`data` 必须是数据框,或其他可由 `fortify()` 强制的对象
ggplot2 & spline() in R - Error in : `data` must be a data frame, or other object coercible by `fortify()`
数据生成的可重现示例:
n <- 9
x <- 1:n
y <- rnorm(n)
data <- data.frame(x, y)
我知道如何在没有 ggplot2 的情况下使用样条曲线绘制数据。
plot(x, y, main = paste("spline[fun](.) "))
lines(spline(x, y))
此处提供绘图图像:
但是,我想用 ggplot2 绘制样条曲线。这是一个代码示例:
ggplot(aes(x = x, y = y)) + geom_point() + geom_line(spline(data))
我得到的错误是:
错误:data
必须是数据框,或其他可由 fortify()
强制的对象,而不是具有 class uneval 的 S3 对象
您是否不小心将 aes()
传递给了 data
参数?
如果我使用
也会抛出同样的错误
ggplot(aes(data, x = x, y = y)) + geom_point() + geom_line(spline(data))
或
ggplot(aes(x = x, y = y)) + geom_point() + geom_line(spline(x, y))
或
ggplot(aes(x = data$x, y = data$y)) + geom_point() + geom_line(spline(data$x,data$y))
下面给出了不同的错误。它在 here 中进行了探索,但我想绘制一条样条曲线,但不确定如何将解决方案应用于我的情况。
library(dplyr)
data %>% ggplot(aes(x = x, y = y)) + geom_point() + geom_line(spline(x, y))
错误:mapping
必须由 aes()
创建
可能的方法:
ggplot(data, aes(x = x, y = y)) +
geom_point() +
geom_line(data = data.frame(spline(x, y))) #+
#ggthemes::theme_base()
问题是:spline
returns list
,你只需要将它转换成 data.frame
就可以了。
数据生成的可重现示例:
n <- 9
x <- 1:n
y <- rnorm(n)
data <- data.frame(x, y)
我知道如何在没有 ggplot2 的情况下使用样条曲线绘制数据。
plot(x, y, main = paste("spline[fun](.) "))
lines(spline(x, y))
此处提供绘图图像:
但是,我想用 ggplot2 绘制样条曲线。这是一个代码示例:
ggplot(aes(x = x, y = y)) + geom_point() + geom_line(spline(data))
我得到的错误是:
错误:data
必须是数据框,或其他可由 fortify()
强制的对象,而不是具有 class uneval 的 S3 对象
您是否不小心将 aes()
传递给了 data
参数?
如果我使用
也会抛出同样的错误ggplot(aes(data, x = x, y = y)) + geom_point() + geom_line(spline(data))
或
ggplot(aes(x = x, y = y)) + geom_point() + geom_line(spline(x, y))
或
ggplot(aes(x = data$x, y = data$y)) + geom_point() + geom_line(spline(data$x,data$y))
下面给出了不同的错误。它在 here 中进行了探索,但我想绘制一条样条曲线,但不确定如何将解决方案应用于我的情况。
library(dplyr)
data %>% ggplot(aes(x = x, y = y)) + geom_point() + geom_line(spline(x, y))
错误:mapping
必须由 aes()
可能的方法:
ggplot(data, aes(x = x, y = y)) +
geom_point() +
geom_line(data = data.frame(spline(x, y))) #+
#ggthemes::theme_base()
问题是:spline
returns list
,你只需要将它转换成 data.frame
就可以了。