我正在尝试通过颜色/透明度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
解决方案。谢谢
13 年 11 月 23 日更新,在特洛伊的帮助下,我到达了这里。现在唯一的问题是图例介于每个矩形的 t 值之间,而它的范围应该是 x,y 处的累积 t。
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")