Контуры графика в ggplot

Как рисовать контуры?

У меня есть х, у, з. Я хочу построить контурные линии, используя значения V.

# data
tbl <- tibble(x = runif(n = 1000, min = 0, max = 1),
              y = runif(n = 1000, min = 0, max = 1),
              V = x^2.5 + y^2)

# plots
ggplot(data = tbl, 
       aes(x = x,
           y = y
           z = V)) + 
  geom_contour_filled(alpha = 0.8, breaks = seq(0, 2, 0.2)) +
  theme_bw()


Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
0
17
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

geom_contour_filled требуют бинарных данных.

Таким образом, ваши данные должны быть

# data
tbl <- tibble(x = rep(seq(0,1,length.out=100),100),
              y = rep(seq(0,1,length.out=100),each=100),
              V = x^2.5 + y^2)

Спасибо, но у меня нет бинарных данных. Подскажите, пожалуйста, как мне бинировать данные и создавать контуры

SiH 18.05.2022 05:25
Ответ принят как подходящий

Вот способ решения проблемы бессовестным копированием и вставкой примера franke из документации geom_contour_filled.

Хитрость заключается в использовании пакета interp для подготовки данных для построения графика. В приведенном ниже коде единственное изменение в инструкции по созданию grid — это объединение набора данных.

suppressPackageStartupMessages({
  library(tidyverse)
  library(interp)
})

set.seed(2022)
tbl <- tibble(x = runif(n = 1000, min = 0, max = 1),
              y = runif(n = 1000, min = 0, max = 1),
              V = x^2.5 + y^2)
grid <- with(tbl, interp::interp(x, y, V))
griddf <- subset(data.frame(x = rep(grid$x, nrow(grid$z)),
                            y = rep(grid$y, each = ncol(grid$z)),
                            z = as.numeric(grid$z)),
                 !is.na(z))

# plots
ggplot(data = griddf,
       aes(x = x,
           y = y,
           z = z)) + 
  stat_contour_filled(alpha = 0.8, breaks = seq(0, 2, 0.2)) +
  theme_bw()

Created on 2022-05-18 by the reprex package (v2.0.1)


Редактировать

Чтобы лучше управлять контейнерами, используйте либо аргумент bins, либо аргумент binwidth вместо breaks. Следующий код имеет ширину ячейки 0.1, что удваивает количество ячеек и теперь использует geom_contour_filled, как в вопросе.

ggplot(data = griddf,
       aes(x = x,
           y = y,
           z = z)) + 
  geom_contour_filled(alpha = 0.8, binwidth = 0.1, show.legend = FALSE) +
  theme_bw()

Created on 2022-05-18 by the reprex package (v2.0.1)

Спасибо. Могу ли я узнать, как я могу контролировать размер сетки в интерпретаторе?

SiH 18.05.2022 05:32

@SiH Вы можете контролировать размер сетки на графике, см. Редактирование. В inter установите для аргументов nx и ny значения, отличные от 40 по умолчанию.

Rui Barradas 18.05.2022 05:39

Спасибо, сэр, есть ли альтернатива интерп. По какой-то причине я не могу установить его.

SiH 18.05.2022 05:51

Другие вопросы по теме