Как рисовать контуры?
У меня есть х, у, з. Я хочу построить контурные линии, используя значения 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 по умолчанию.
Спасибо, сэр, есть ли альтернатива интерп. По какой-то причине я не могу установить его.
Спасибо, но у меня нет бинарных данных. Подскажите, пожалуйста, как мне бинировать данные и создавать контуры