簡體   English   中英

R:函數等值線圖

[英]R: Contour Plots for Functions

我正在使用 R 編程語言。

我正在嘗試為以下 function 制作輪廓 Plot:

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()

在此處輸入圖像描述

我正在嘗試按照此處鏈接中的說明進行操作: https://r-charts.com/correlation/contour-plot-ggplot2/ 在此鏈接中,它展示了如何為包含兩個不同變量的值的數據框制作輪廓 plot。 就我而言,看起來我已經有了一個名為“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 為函數繪制等值線圖(水平圖)的方式嗎?

我持懷疑態度的原因是因為我試圖對一個完全不同的 function ( 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()

在此處輸入圖像描述

我認為這是不正確的——這兩個函數看起來完全不同,我懷疑它們會有相同的等高線圖。 這讓我懷疑並認為我做錯了什么。

謝謝!

注意:理想情況下,第二個 function 的輪廓 plot 應如下所示: 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()

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM