#r #ggplot2 #plot #ggpubr
#r #ggplot2 #сюжет #ggpubr
Вопрос:
Мне сложно добавлять отдельные точки данных на мои гистограммы с помощью ggbarplot. Кажется, у меня есть проблема, особенно с многогрупповыми данными (с использованием заливки или цвета). Я пробовал несколько разных способов добавления точек, но они либо привели к ошибке (добавление дрожания), либо точки неправильно выровнены по правильной линейке (добавление точечной диаграммы). Любая помощь была бы очень признательна.
Пример данных:
library(ggpubr)
#dataframe
ER <- read.table(header=TRUE, text="
Sex Group ER
M V 1046
M V 1290
M Z 1202
M Z 1056
F V 8000
F V 7859
F Z 4000
F Z 3409
")
Я могу заставить его работать, если использую «add = c (point)», но когда я пытаюсь использовать «add = c (jitter)», это приводит к ошибке («position_jitterdodge ()» требует хотя бы одной эстетики для уклонения. Я видел похожие вопросы, задаваемые здесь, но обычно они решались путем добавления фактора группировки к «Заливке» вместо «цвета». Я пробовал оба варианта, но ни один из них не сработал.
e <- ggbarplot(ER, x = "Sex", y = "ER", title = "Arcuate Nucleus",
ylab= "ER Labeling", xlab = "Group", color = "Group",
add = c("mean_se", "jitter"), add.params = list(color = "black"), palette = "jco",
position = position_dodge(.8))
print(e)
Попытка использовать «add = c («dotplot)» приводит к тому, что точки смешиваются между моей второй группой и отображаются между двумя соседними группами.
e2 <- ggbarplot(ER, x = "Sex", y = "ER", title = "Arcuate Nucleus",
ylab= "ER Labeling", xlab = "Group", color = "Group",
add = c("mean_se", "dotplot"), add.params = list(color = "black"), palette = "jco",
position = position_dodge(.8))
print(e2)
Кажется, это работает … но я бы очень хотел использовать разные цвета, формы и добавить дрожание. Пример ниже.
e3 <- ggbarplot(ER, x = "Sex", y = "ER", title = "Arcuate Nucleus",
ylab= "ER Labeling", xlab = "Group", color = "Group",
add = c("mean_se", "point"), add.params = list(color = "black"), palette = "jco",
position = position_dodge(.8)) theme(axis.line = element_line(size = 0.9), axis.ticks = element_line(size = 0.9))
print(e3)
Ответ №1:
Проблема в том, что add.params(color = "black")
вы перезаписываете grouping ( color = "Group"
), необходимую для уклонения от точек. Следовательно, удаление add.params(color = "black")
заставит ваш код работать. Если вам нужны черные точки и полосы ошибок, вы можете сделать это, например scale_color_manual
, установив цвета для всех групп на "black"
:
library(ggpubr)
#> Loading required package: ggplot2
ER <- read.table(header=TRUE, text="
Sex Group ER
M V 1046
M V 1290
M Z 1202
M Z 1056
F V 8000
F V 7859
F Z 4000
F Z 3409
")
ggbarplot(ER, x = "Sex", y = "ER", title = "Arcuate Nucleus",
ylab= "ER Labeling", xlab = "Group", color = "Group", fill = "Group",
add = c("mean_se", "jitter"), palette = "jco",
position = position_dodge(.8))
scale_color_manual(values = c(V = "black", Z = "black"))
Редактировать
Проблема в том, что подобные пакеты ggpubr
предлагают многое из коробки. «Цена», которую за это платят, заключается в том, что готовые решения имеют свои ограничения. Если вы хотите иметь больше контроля над внешним видом вашего графика, вы должны сделать это (хотя бы частично) с помощью ggplot2, например, чтобы раскрасить точки, которые вы можете использовать для дрожащих точек geom_jitter
. Здесь я изменяю форму точек, чтобы добавить черный контур. К сожалению, невозможно изменить fill
цвет, а также для дрожания требуется заливка aes:
ggbarplot(ER, x = "Sex", y = "ER", title = "Arcuate Nucleus",
ylab= "ER Labeling", xlab = "Group", color = "Group", fill = "Group",
add = c("mean_se"), palette = "jco",
position = position_dodge(.8))
scale_color_manual(values = c(V = "black", Z = "black"))
geom_jitter(aes(Sex, ER, fill = Group), shape = 21, color = "black", position = position_jitterdodge(jitter.height = .1, jitter.width = .2))
Другим вариантом было бы использовать, например
geom_jitter(aes(Sex, ER, fill = Group), color = "grey", position = position_jitterdodge(jitter.height = .1, jitter.width = .2))
что дает вам «заполненные», например, «серые» точки, но без контура.
Комментарии:
1. Есть ли способ сделать полосы ошибок черными, но точки другого цвета, например, белые с черным контуром?
2. Привет @LauraCortes. Я только что внес правку, чтобы показать вам два варианта окрашивания точек по-разному. Лучший S.
3. Большое спасибо @stefan