+-
用分类(二进制)值绘制水平“堆叠”直方图

我的数据集或多或少看起来像这样:

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()

这将导致以下绘图:“按下直方图1键”“ >>

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

我需要按每个参与者按下键的顺序绘制每个KEY_PRESSED,以得到看起来或多或少像这样的东西:“按下直方图2键”“ >>

我的数据集看起来或多或少是这样的:TRIAL PARTICIPANT KEY_PRESSED 1 1左2 1右3 1左4 1左1 2 ...

1
投票

切换到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()