Я пытаюсь использовать ggplot
для создания псевдо-boxplot
посредством цвета/прозрачности, но немного борюсь. Идея состоит в том, что для любой точки на оси x чем больше раз встречается конкретное значение y, тем темнее должна быть точка (x,y). Чтобы добавить сложности, у меня нет счетчика для каждого (x, y), но вместо этого у меня есть счетчик для (x , ymin:ymax)
, что означает, что этот счетчик верен для всех точек между (x, ymin) и (x, ymax)
Поиск кажется немного сложным, и я не могу найти ничего, что мог бы использовать. Самое близкое, что я мог сделать самостоятельно, было ниже, однако это занимает очень много времени для больших наборов данных.
library(ggplot2)
set.seed(1)
(d <- data.frame(cbind(x = sample(1:3, 10, replace = TRUE), y = sample(3:8, 10, replace = TRUE)), fac = sample(1:3, 10, replace = TRUE)))
p1 <- ggplot()
for ( i in seq(nrow(d)))
{
p1 <- p1 + geom_rect(
data=d[i,],
aes(
xmin = fac - .4,
xmax = fac + .4,
ymin = x,
ymax = y),
alpha = .25
)
}
Какие-либо предложения? Я бы предпочел решение ggplot
. Спасибо
Обновление от 23 ноября 13. С помощью Троя я добрался сюда. Единственная проблема сейчас заключается в том, что легенда колеблется между значениями t для каждого прямоугольника, тогда как она должна варьироваться от кумулятивного t на x, y.
library(ggplot2)
set.seed(1)
d <- data.frame(cbind(x = sample(1:3, 6, replace = TRUE),
ymin = sample(3:8, 6, replace = TRUE),
ymax = sample(3:8, 6, replace = TRUE),
t = sample(3:8, 6, replace = TRUE)/10
))
ggplot(data=d) +
geom_rect(aes(xmin=x-0.4,xmax=x+0.4,ymin=ymin,ymax=ymax,alpha=t),fill="red")