R:函数的等值线图
R: Contour Plots for Functions
我正在使用 R 编程语言。
我正在尝试为以下函数制作等值线图:
library(plotly)
my_function <- function(x,y) {
final_value = x^2 + y^2
}
input_1 <- seq(-1.5, 1.5,0.1)
input_2 <- seq(-1.5, 1.5,0.1)
z <- outer(input_1, input_2, my_function)
plot_ly(x = input_1, y = input_2, z = z) %>% add_surface()
我正在尝试按照此处 link 的说明进行操作:https://r-charts.com/correlation/contour-plot-ggplot2/。在此 link 中,它展示了如何为包含两个不同变量值的数据框绘制等高线图。就我而言,看起来我已经有了一个名为“z”的矩阵。我尝试使用网站上的代码:
# install.packages("ggplot2")
library(ggplot2)
# Data
set.seed(1)
z = data.frame(z)
ggplot(z, aes(x = input_1, y = input_2)) +
geom_density_2d_filled()
谁能告诉我我做的是否正确?这是使用 ggplot2 为函数绘制等值线图(水平图)的方式吗?
我持怀疑态度的原因是因为我尝试对完全不同的函数 (https://en.wikipedia.org/wiki/Rastrigin_function) 重复此过程并得到非常相似的结果:
my_function <- function(x1, x2) {
final_value = 20 + x1^2 + x2^2 - 10*(cos(2*pi*x1) + cos(2*pi*x2))
}
x1 <- seq(-5, 5,0.1)
x2 <- seq(-5, 5,0.1)
z <- data.frame(outer(x1, x2, my_function))
ggplot(z, aes(x = x1, y = x2)) +
geom_density_2d_filled()
z <- outer(x1, x2, my_function)
plot_ly(x = x1, y = x2, z = z) %>% add_surface()
我认为这是不正确的——这两个函数看起来完全不同,我怀疑它们会有相同的等高线图。这让我怀疑并认为我做错了什么。
谢谢!
注意: 理想情况下,第二个函数的等高线图应如下所示:https://upload.wikimedia.org/wikipedia/commons/0/0e/Rastrigin-smooth-contour.svg
我们可以试试这个
expand.grid(X1 = x1, X2 = x2) %>%
mutate(Z = my_function(X1, X2)) %>%
ggplot(aes(X1, X2, z = Z)) +
geom_contour() +
geom_contour_filled()
我正在使用 R 编程语言。
我正在尝试为以下函数制作等值线图:
library(plotly)
my_function <- function(x,y) {
final_value = x^2 + y^2
}
input_1 <- seq(-1.5, 1.5,0.1)
input_2 <- seq(-1.5, 1.5,0.1)
z <- outer(input_1, input_2, my_function)
plot_ly(x = input_1, y = input_2, z = z) %>% add_surface()
我正在尝试按照此处 link 的说明进行操作:https://r-charts.com/correlation/contour-plot-ggplot2/。在此 link 中,它展示了如何为包含两个不同变量值的数据框绘制等高线图。就我而言,看起来我已经有了一个名为“z”的矩阵。我尝试使用网站上的代码:
# install.packages("ggplot2")
library(ggplot2)
# Data
set.seed(1)
z = data.frame(z)
ggplot(z, aes(x = input_1, y = input_2)) +
geom_density_2d_filled()
谁能告诉我我做的是否正确?这是使用 ggplot2 为函数绘制等值线图(水平图)的方式吗?
我持怀疑态度的原因是因为我尝试对完全不同的函数 (https://en.wikipedia.org/wiki/Rastrigin_function) 重复此过程并得到非常相似的结果:
my_function <- function(x1, x2) {
final_value = 20 + x1^2 + x2^2 - 10*(cos(2*pi*x1) + cos(2*pi*x2))
}
x1 <- seq(-5, 5,0.1)
x2 <- seq(-5, 5,0.1)
z <- data.frame(outer(x1, x2, my_function))
ggplot(z, aes(x = x1, y = x2)) +
geom_density_2d_filled()
z <- outer(x1, x2, my_function)
plot_ly(x = x1, y = x2, z = z) %>% add_surface()
我认为这是不正确的——这两个函数看起来完全不同,我怀疑它们会有相同的等高线图。这让我怀疑并认为我做错了什么。
谢谢!
注意: 理想情况下,第二个函数的等高线图应如下所示:https://upload.wikimedia.org/wikipedia/commons/0/0e/Rastrigin-smooth-contour.svg
我们可以试试这个
expand.grid(X1 = x1, X2 = x2) %>%
mutate(Z = my_function(X1, X2)) %>%
ggplot(aes(X1, X2, z = Z)) +
geom_contour() +
geom_contour_filled()