Я пытаюсь построить график взаимодействий с доверительными интервалами Тьюки. Нанесите на график разницу в длине в зависимости от дозы и супп. Эти вещи уже работают в примере, который я показываю внизу вопроса.
Я хотел бы показать разные типы линий, разные формы и разные цвета, но только для того, чтобы различать 2 варианта поддержки (OJ или VC). Пунктирная линия OJ, синяя, со средним значением в виде круга, нормальная линия VC, красная, со средним значением в виде квадрата.
Мои две проблемы:
library("ggpubr")
require("dplyr")
data("ToothGrowth")
# Ahora tukey con anova two ways
# Store the data in the variable df
df <- ToothGrowth
# Show a random sample
set.seed(1234)
dplyr::sample_n(df, 10)
# Convert dose as a factor and recode the levels # as "D0.5", "D1", "D2"
df$dose <- factor(df$dose,
levels = c(0.5, 1, 2),
labels = c("D0.5", "D1", "D2"))
# MF anova # Two-way ANOVA with interaction effect # These two calls are equivalent
#res.aov3 <- aov(len ~ supp * dose, data = df)
res.aov3 <- aov(len ~ supp + dose + supp:dose, data = df)
summary(res.aov3)
# Use TukeyHSD
tukeyHSD <- TukeyHSD(res.aov3, which = "dose")
plot(tukeyHSD)
# Allans response
tukeyCI <- (tukeyHSD$dose[1, 1] - tukeyHSD$dose[1, 2]) / 2
print("Example of an error that happens when I set different point shapes and change the leyends name.")
ggplot(df, aes(x = dose, y = len, color = supp, group = supp)) +
stat_summary(fun.y = mean, fun.ymin = function(x) mean(x) - tukeyCI, fun.ymax = function(x) mean(x) + tukeyCI, geom = "errorbar", size = 1, color = 'gray50', width = 0.25) +
scale_shape_manual(values = 21:26) +
stat_summary(fun.y = function(x) mean(x), geom = "line", aes(group = supp)) +
stat_summary(fun.y = mean, geom = "point", size = 3, aes(shape = supp), col = "black", fill = 'white') +
theme_minimal(base_size = 16) +
theme(panel.background = element_rect(fill = "white", colour = "black")) +
scale_colour_discrete(name = "NewName ERROR")
Чтобы объединить ваши легенды, вы должны использовать одно и то же имя для обоих legends
, что, ИМХО, лучше всего делать через labs
. Не уверен, в чем проблема с типом линии, но вы добавляете его в stat_summary
, добавляя линии, и, конечно, в этом случае также задаете имя для легенды linetype
.
ggplot(df, aes(x = dose, y = len, color = supp, group = supp)) +
stat_summary(fun.y = mean, fun.ymin = function(x) mean(x) - tukeyCI, fun.ymax = function(x) mean(x) + tukeyCI, geom = "errorbar", size = 1, color = 'gray50', width = 0.25) +
scale_shape_manual(values = 21:26) +
stat_summary(fun.y = function(x) mean(x), geom = "line", aes(group = supp, linetype = supp)) +
stat_summary(fun.y = mean, geom = "point", size = 3, aes(shape = supp), col = "black", fill = 'white') +
theme_minimal(base_size = 16) +
theme(panel.background = element_rect(fill = "white", colour = "black")) +
labs(color = "NewName ERROR", shape = "NewName ERROR", linetype = "NewName ERROR")