使用分类(二进制)值绘制水平 'stacked' 直方图

Plotting horizontal 'stacked' histogram with categorical (binary) values

我的数据集大致如下所示:

TRIAL   PARTICIPANT    KEY_PRESSED
1       1              Left
2       1              Right
3       1              Left
4       1              Left
1       2              Right
2       2              Right
3       2              Left
4       2              Left
...     ...            ...

我想做的是为每个参与者绘制一个水平直方图,显示他们在每次试验中按下的键,但保持试验顺序(从 1到 4) 每个参与者 到目前为止,我已尝试使用以下代码执行此操作:

ggplot(data = data_resp, aes(x = PARTICIPANT, y = TRIAL, fill=KEY_PRESSED))+
  geom_bar(stat='identity')+ coord_flip()

结果如下图:

如您所见,ggplot 识别出 KEY_PRESSED 的两个值(LeftRight)并将它们分别绘制在每个 bin 上。

我需要的是按照每个参与者按下键的顺序绘制每个 KEY_PRESSED,以获得或多或少看起来像这样的东西:

切换到 geom_tile 应该可以解决问题。试试这个:

library(ggplot2)

set.seed(42)

data_resp <- data.frame(
  PARTICIPANT = rep(c(1, 2, 3, 4), each = 10),
  TRIAL = rep(c(1:10), 4),
  KEY_PRESSED = sample(c("Left", "Right"), 4 * 10, rep = TRUE)
) 

ggplot(data = data_resp, aes(x = PARTICIPANT, y = TRIAL, fill=KEY_PRESSED))+
  geom_tile(color = "white") + coord_flip()

reprex package (v0.3.0)

于 2020 年 3 月 13 日创建