R ggplot прозрачность - альфа-значения зависят от другой переменной
У меня есть следующие данные: [пример из R-книги Cookbook]
Cultivar Date Weight sd n se big
c39 d16 3.18 0.9566144 10 0.30250803 TRUE
c39 d20 2.8 0.2788867 10 0.08819171 TRUE
c39 d21 2.74 0.9834181 10 0.3109841 TRUE
c52 d16 2.26 0.4452215 10 0.14079141 FALSE
c52 d20 3.11 0.7908505 10 0.25008887 TRUE
c52 d21 1.47 0.2110819 10 0.06674995 FALSE
Я хотел бы иметь штриховую диаграмму, где прозрачность барьера зависит от переменной big
.
Я пробовал следующее, где я пытался установить значения alpha
в зависимости от разных значений big
:
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
geom_bar(position="dodge", stat="identity")
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
geom_bar(position="dodge", stat="identity", alpha=cabbage_exp$big=c("TRUE"= 0.9, "FALSE" = 0.35))
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar)) +
geom_bar(position="dodge", stat="identity", alpha=big=c("TRUE"= 0.9, "FALSE" = 0.35))
Я хотел бы иметь различную прозрачность в барах в зависимости от значения большой переменной. Любая помощь или руководство очень ценится!
Ответы
Ответ 1
Другая возможность, использующая scale_alpha_discrete
, где аргумент range
может использоваться для установки ваших желаемых значений alpha
для каждого уровня "большой".
ggplot(data = cabbage_exp, aes(x = Date, y = Weight, fill = Cultivar, alpha = big)) +
geom_bar(position = "dodge", stat = "identity") +
scale_alpha_discrete(range = c(0.35, 0.9))
![enter image description here]()
Ответ 2
Проблема заключается в том, что ваша переменная дискретна, а масштаб alpha
непрерывный. Один из способов сделать это - вручную вычислить ваши альфа-значения перед построением графика:
alpha <- ifelse(d$big, 0.9, 0.35)
ggplot(d, aes(x=Date, y=Weight, fill=Cultivar)) +
geom_bar(position="dodge", stat="identity", aes(alpha=alpha))
Недостатком является то, что вы не получите правильную легенду для своих альфа-значений. Вы можете удалить его с помощью этого:
ggplot(d, aes(x=Date, y=Weight, fill=Cultivar)) +
geom_bar(position="dodge", stat="identity", aes(alpha=big)) +
scale_alpha_continuous(guide=FALSE)
Конечный результат:
![enter image description here]()