#r #ggplot2
#r #ggplot2
Вопрос:
У меня возникли проблемы с созданием цветных графиков скрипки на ggplot. Я нашел обходной путь для создания графиков с линиями значимости между графиками скрипки, это включает в себя создание отдельных фреймов данных, а затем добавление их в виде geom_lines к исходному графику.
Изначально я хотел, чтобы графики были серыми, однако теперь это изменилось, и я хотел бы, чтобы графики скрипки были окрашены. Однако, похоже, это не работает.
Ниже приведен мой код для графиков серой скрипки (который работает):
df1 <- data.frame(a = c(1, 1:2,2), b = c(1.5, 1, 1, 1.5))
df2 <- data.frame(a = c(1, 1:3,3), b = c(0.5, 0, 0, 0, 0.5))
df3 <- data.frame(a = c(1, 1:4,4), b = c(-0.5, -1, -1, -1, -1, -0.5))
df4 <- data.frame(a = c(2, 2:3,3), b = c(15, 15.5, 15.5, 15))
df5 <- data.frame(a = c(2, 2:4,4), b = c(16, 16.5, 16.5, 16.5, 16))
df6 <- data.frame(a = c(3, 3:4,4), b = c(17, 17.5, 17.5, 17))
pp <- EditedDF1 %>%
ggplot(aes(x=ct_marshallFAC, y=logGFAP))
geom_violin(fill="#CCCCCC")
stat_summary(fun.y=median, geom="point", size=2, color="red")
geom_boxplot(width=0.1, outlier.shape = NA)
theme_classic()
theme(axis.title.x = element_blank(), axis.text.x = element_blank(),
axis.ticks.x = element_blank()) `
labs(x="", y= "Log GFAP(ng/ml)")
ylim(-2, 18)
theme(legend.position="bottom")
pp
aa <- pp
geom_line(data = df1, aes(x = a, y = b)) annotate("text", x = 1.5, y
= 0.2, label = "***", size = 6 )
geom_line(data = df2, aes(x = a, y = b)) annotate("text", x = 1.5, y
= -0.8, label = "***", size = 6)
geom_line(data = df3, aes(x = a, y = b)) annotate("text", x = 1.5, y
= -1.8, label = "***", size = 6)
geom_line(data = df4, aes(x = a, y = b)) annotate("text", x = 2.5, y
= 15.8, label = "***", size = 6)
geom_line(data = df5, aes(x = a, y = b)) annotate("text", x = 2.5, y
= 16.8, label = "***", size = 6)
geom_line(data = df6, aes(x = a, y = b)) annotate("text", x = 3.5, y
= 17.8, label = "*", size = 6)
Как только я добавлю код для цвета, такой как:
pp <- EditedDF1 %>%
ggplot(aes(x=ct_marshallFAC, y=logGFAP, fill=EditedDF1$ct_marshallFAC))
geom_violin() (The rest of the above)
он окрашивает графики скрипки, но удаляет линии значимости из графика, не запуская раздел геометрических линий и указывая: Ошибка: Эстетика должна быть либо длиной 1, либо такой же, как у data (4): fill
или
pp <- EditedDF1 %>%
ggplot(aes(x=ct_marshallFAC, y=logGFAP))
geom_violin(fill=ct_marshallFAC) (The rest of the above)
в нем говорится: Ошибка: эстетика должна быть либо длиной 1, либо такой же, как у данных (2048): заполнить
Я был бы очень признателен за любую помощь в этом вопросе, поскольку я чувствую, что добавить цвет должно быть просто, но это не доказывает этого!
Большое спасибо,
Dan
Ответ №1:
Каждый geom_line
вызов наследует все предыдущие aes()
назначения, включая заполнение. Используйте inherit.aes = FALSE
в каждом вызове для быстрого исправления:
...
geom_line(..., inherit.aes = FALSE)
...
Надеюсь, это должно сработать, но если нет, могут быть другие вещи, требующие изменения. Опубликуйте образец / воспроизводимый пример кода, который, надеюсь, поможет вам перейти к рабочему коду.