Я пытаюсь создать верхний левый график на этом рисунке в ggplot, используя viridis для создания цветового градиента.
Вот мои примеры данных:
# simulate t-values
data = data.frame(sim =1:10000,
t_0= rt(n = 10000,df =12, ncp=0),
t_1 = rt(n = 10000,df =12, ncp=1.2))
# compute p-values
data = data %>%
mutate(p_0 = 2* pt(t_0, df=12, lower.tail = ifelse(t_0 > 0,FALSE ,TRUE)),
p_1 = 2* pt(t_1, df=12, lower.tail = ifelse(t_1 > 0,FALSE ,TRUE)))
# convert from wide to long
data.long = data %>%
gather(condition,measurement, t_0:p_1) %>%
separate(col=condition, into=c("para","hyp"), sep = "_")
# convert to wide repeated measures format
data.wide = data.long %>% spread(key = para, measurement)
Чтобы создать графики слева, мне нужно раскрасить гистограмму в соответствии с соответствующими значениями вправильные графики.Если t = 0 (соответствует ap близко к 1), график должен быть желтым, если t> 4 (соответствует ap близко к 0), заливка должна быть темно-синей. В этом посте показано, как создать подобный график с помощью scale_fill_gradientn, который, к сожалению, не работает с дискретными значениями, которые я создал с помощью cut ().
Это самое близкое, что я пришел,однако я хочу, чтобы график имел желтый цвет при смешивании x = 0 с темно-синим по краям.
# create bins based on t-values
t0bins <- seq(-12, 12, by = 1)
# compute corresponding p-values
pt0bins <- 2*pt(t0bins, df = 12, lower.tail = FALSE)
ggplot(data.wide, aes(x=t, fill=cut(..x.., breaks=get("t0bins", envir=.GlobalEnv)))) +
geom_histogram(binwidth=0.1)+
scale_fill_viridis(discrete=T)
, что дает: