График уровня / контурный график для данных xyz

#r #ggplot2

#r #ggplot2

Вопрос:

Я пытаюсь воспроизвести следующий график. Z — это функция от X и Y. На графике показаны 3 точки данных (белые точки), а также контурные линии, показывающие все возможные значения для z для любой комбинации x и y.

Пример графика, который я пытаюсь создать

Вот что у меня есть на данный момент:

 funct <- function(x,y) sqrt((1-x)^2 (1-y)^2)
df <- data.frame(x = c(0.3, 0.6, 0.8), 
                 y = c(0.7, 0.4, 0.9), 
                 z = funct(x,y))

grid <- expand.grid(x = seq(0,1,0.01), y = seq(0,1,0.01))

ggplot(grid, aes(x, y, z = funct(x,y)))    
  geom_contour() 
 

Итак, мне удалось нарисовать сетку с контурными линиями, но мне все еще не хватает:

  • Как добавить 3 точки данных в эту сетку
  • Как раскрасить контурные линии и добавить легенду

Было бы здорово, если бы кто-нибудь указал мне правильное направление!

Спасибо, Лена

Ответ №1:

Вы могли бы попробовать:

 ggplot(grid, aes(x, y, z = funct(x,y)))    
  geom_contour_filled(color = "black")  
  scale_fill_manual(values = c("#000000", "#5F0000", "#BF0000", "#FF1F00", 
                               "#FF7F00", "#FFDF00", "#FFFF3F", "#FFFF9F"))  
  geom_point(data = df, shape = 21, size = 3, fill = "white",
             color = "dodgerblue")
 

введите описание изображения здесь

Комментарии:

1. Удивительный Адам, большое тебе спасибо! Я еще не сталкивался с функцией «geom_contour_filled», несмотря на довольно продолжительный поиск.