Как рисовать контуры?
У меня есть х, у, з. Я хочу построить контурные линии, используя значения 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()





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)
Вот способ решения проблемы бессовестным копированием и вставкой примера 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 Вы можете контролировать размер сетки на графике, см. Редактирование. В inter установите для аргументов nx и ny значения, отличные от 40 по умолчанию.
Спасибо, сэр, есть ли альтернатива интерп. По какой-то причине я не могу установить его.
Спасибо, но у меня нет бинарных данных. Подскажите, пожалуйста, как мне бинировать данные и создавать контуры