我正在使用 R 版本 4.3.2 (2023-10-31)。
我正在为函数的特定级别的 2 个变量的函数绘制等高线。我这样做是为了同一块地块上的两个不同的函数。我想在靠近每条轮廓线的某个点添加一个小箭头,显示函数增加的方向。任何方向都可以,但梯度方向(在该点)将是最好的。
这里是一些示例代码,可以创建我想要的轮廓线。现在,我如何在靠近轮廓线的某一点为每条线添加一个箭头,以显示函数增加的方向?
library(tidyverse)
x <- seq(1,2,length.out=100)
y <- seq(1,2,length.out=100)
myf <- function(x,y) {x*y}
myg <- function(x,y) {x^2 + y^2}
d1 <- expand.grid(X1 = x, X2 = y) %>%
mutate(Z = myf(X1,X2)) %>%
as.data.frame()
d2 <- expand.grid(X1 = x, X2 = y) %>%
mutate(Z = myg(X1,X2)) %>%
as.data.frame()
ggplot(data = d1, aes(x=X1,y=X2,z=Z))+
stat_contour(breaks = c(2)) +
stat_contour(data=d2, aes(x=X1,y=X2,z=Z), breaks=c(6))
您可以使用
geom_segment
在绘图中创建自定义箭头线。您可以像这样指定坐标:
library(tidyverse)
ggplot(data = d1, aes(x=X1,y=X2,z=Z))+
stat_contour(breaks = c(2)) +
stat_contour(data=d2, aes(x=X1,y=X2,z=Z), breaks=c(6)) +
geom_segment(data = data.frame(x = c(1.25, 1.75),
xend = c(1.5, 1.5),
y = c(1.5, 1.75),
yend = c(1.25, 2)),
aes(x = x, y = y, xend = xend, yend = yend),
inherit.aes = FALSE,
arrow = arrow(length = unit(0.5, "cm")))
创建于 2024-01-11,使用 reprex v2.0.2