Я хотел бы построить с gglot
geom_raster
2D-график с 2 различными градиентами, но я не знаю, есть ли быстрое и элегантное решение для этого, и я застрял.
Эффект, который я хотел бы видеть, это наложение нескольких geom_raster
, по сути.Кроме того, мне нужно решение, которое масштабируется до N различных градиентов;позвольте мне привести пример с N = 2 градиентами, которым легче следовать.
Сначала я создаю сетку из 100 и 100 позиций X и Y
# the domain are 100 points on each axis
domain = seq(0, 100, 1)
# the grid with the data
grid = expand.grid(domain, domain, stringsAsFactors = FALSE)
colnames(grid) = c('x', 'y')
Затем вычисляю одно значение дляточка сетки;представьте что-нибудь глупое, подобное этому
grid$val = apply(grid, 1, function(w) { w['x'] * w['y'] }
Я знаю, как построить это с помощью пользовательского градиента от белого к красному
ggplot(grid, aes(x = x, y = y)) +
geom_raster(aes(fill = val), interpolate = TRUE) +
scale_fill_gradient(
low = "white",
high = "red", aesthetics = 'fill')
Но теперь представьте, что у меня есть другое значение для каждой точки сетки
grid$second_val = apply(grid, 1, function(w) { w['x'] * w['y'] + runif(1) }
Теперь, как мне построить сетку, где каждая позиция "(x, y)" окрашена с наложением:
- 1 градиента от белого к красному со значением, заданным как
val
- 1 градиент "от белого к синему" со значением, заданным как
second_val
По существу, в большинстве приложений val
и second_val
будут двумя функциями плотности 2Dи я хотел бы, чтобы каждый градиент представлял значение плотности.Мне нужны два разных цвета, чтобы увидеть различное распределение значений.
Я видел этот похожий вопрос , но не знаю, как использовать этот ответ в моем случае.