繁体   English   中英

在R中绘制两个函数的两条不同曲线时出现错误

[英]Got error when plotting two different curves of two functions in R

a<-function(x) exp(-x) b<-function(x) 0.75*exp(-0.75*x) plot(a,xlim=c(-3,3),type="l",col="red3",lwd=2) lines(b,xlim=c(-3,3),type="l",col="blue3")

我想在一个轴上绘制这两个函数的图,但显示错误:as.double(x)中的错误:无法将类型“ closure”强制为“ double”类型的向量

如何解决这个问题?

这里是利用函数曲线,该曲线绘制对应于由限定在所述间隔的函数的曲线的方法fromto

a <- function(x) exp(-x)
b <- function(x) 0.75*exp(-0.75*x)
plot(a, xlim = c(-3, 3), type = "l",col = "red3", lwd = 2)
curve(b, from = -3, to = 3, col = "blue3", add = T, lwd = 2)
legend("topright", c("a", "b"), col = c("red3", "blue3"), lty = 1, lwd = 2)

在此处输入图片说明

实际上,对plot的调用是对plot.function的调用, plot.function是类function的S3方法,因为第一个参数是函数。 如果一种类型是?plot.function则文档将调用curve {graphics}

等效的方法是:

curve(a, from = -3, to = 3, col = "red3", lwd = 2)
curve(b, from = -3, to = 3, col = "blue3", add = T, lwd = 2)
legend("topright", c("a", "b"), col = c("red3", "blue3"), lty = 1, lwd = 2)

plot(a, xlim = c(-3, 3), type = "l",col = "red3", lwd = 2)
plot(b, xlim = c(-3, 3), type = "l",col = "blue3", lwd = 2, add = T)
legend("topright", c("a", "b"), col = c("red3", "blue3"), lty = 1, lwd = 2)

因为他们都称curve

a<-function(x) exp(-x)
b<-function(x) 0.75*exp(-0.75*x)

plot(a,xlim=c(-3,3),type="l",col="red3",lwd=2)
plot(b,xlim=c(-3,3),type="l",col="blue3", add = TRUE)

使用plot()而不是lines()并添加add = TRUE参数

在此处输入图片说明

编辑:但是我建议使用ggplot图形。 这段代码:

library(ggplot2)

ggplot(data.frame(x=c(-3,3)), aes(x)) +
  stat_function(fun=a, geom="line", aes(colour="Function a: exp(-x)")) +
  stat_function(fun=b, geom="line", aes(colour="Function b: 0.75*exp(-0.75*x)")) +
  labs(colour = "Functions")

会给你这张漂亮的照片:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM