1

我正在尝试通过颜色/透明度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")
4

1 回答 1

2

ggplot 将使用 geom_rect 支持向量

如果您对原始情节的机制感到满意,这至少会摆脱循环?

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)))
ggplot(data=d) +
geom_rect(aes(xmin=fac-0.4,xmax=fac+0.4,ymin=x,ymax=y),alpha=0.25,fill="red")

阴谋

或者您是否想更改使用 count() 的不同实现来计算透明度的方式?

编辑 - 如果您只是想用“计数”指示屏蔽网格:

library(ggplot2)
set.seed(1)
d <- data.frame(cbind(x = sample(1:3, 15, replace = TRUE), 
     y = sample(3:8, 18, replace = TRUE)))

ggplot(data=d) +
   geom_tile(aes(x=x,y=y),alpha=0.25,fill="red")

地块

于 2013-11-22T08:13:44.923 回答