我需要这种类型的图:
我需要x轴上的x,y轴上的y和ploy区域中的fx和fy。你可以帮我R,即两条曲线相互交叉。我的代码是
gx <- expand.grid(x=seq(1,5,length=50))
fx <- function(x) { exp(-x) }
gx$fx <- apply(gx,1,fx)
plot(gx, type="l",col="red")
gy <- expand.grid(y=seq(1,5,length=50))
fy <- function(y) { y*exp(-y) }
gy$fy <- apply(gy, 1, fy)
par(new=TRUE)
plot(gy, type="l", col="green")
答案 0 :(得分:2)
不是100%确定我理解这个问题意味着什么,但是如果你想要标记你的轴你可以使用xlab和ylab图形参数:
即:
plot(gx, type="l",col="red", xlab="label for x axis", ylab="label for y axis")
答案 1 :(得分:0)
这是带基数的情节:
plot(gx, type="n", xlab="", ylab="")
for(i in 1:2) lines(get(c("gx", "gy")[i]), col=c("red", "green")[i])
title(xlab="x", ylab="y")
我个人更喜欢做一些数据操作,将数据(gx
和gy
)组合成一个单一的data.frame,使用“dplyr”和“tidyr”包裹:
dat <- data.frame(gx, gy)
dat <- dat %>%
gather(xvar, x, x,y) %>%
gather(yvar, y, fx, fy)
head(dat)
# xvar x yvar y
# 1 x 1.000000 fx 0.3678794
# 2 x 1.081633 fx 0.3390415
# 3 x 1.163265 fx 0.3124642
# 4 x 1.244898 fx 0.2879703
# 5 x 1.326531 fx 0.2653964
# 6 x 1.408163 fx 0.2445921
这样可以轻松地使用ggplot进行可视化:
ggplot(dat, aes(x,y, col=yvar)) + geom_line()
答案 2 :(得分:0)
使用legend
和lines
函数以及plot
会得到下图。
plot(gx,type="l",col="red", xlab ="x", ylab="y")
lines(gy,col="green")
legend("topright", inset=.05, cex = 1, c("f(x)","f(y)"), horiz=TRUE, lty=c(1,1), lwd=c(2,2), col=c("red","green"), text.font=3)
答案 3 :(得分:0)
到目前为止,似乎没有人回答过将f(x)和f(y)放在绘图区域。您可以使用text()
执行此操作,但这不是最优雅的解决方案,因为您必须手动提供放置文本的位置坐标。
您提供的数据:
gx <- expand.grid(x=seq(1,5,length=50))
fx <- function(x) { exp(-x) }
gx$fx <- apply(gx,1,fx)
gy <- expand.grid(y=seq(1,5,length=50))
fy <- function(y) { y*exp(-y) }
gy$fy <- apply(gy, 1, fy)
创建情节:
plot(gx,type="l",col="red", xlab ="x", ylab="y")
lines(gy,col="green")
text(x=c(3,2),y=c(0.18,0.1), labels=c("f(y)","f(x)"))
给出这个:
我希望这有帮助!对你的问题感到困惑的部分是当你说你需要相交的线时。这是您的数据和/或您正在应用的功能的问题,而不是我们可以毫不清楚地回答的问题。