Недавно я провел несколько смешанных дисперсионных анализов 2x3 для проекта нейробиологии с возрастом и валентностью в качестве предикторов значений корреляции. Эти анализы проводились трижды, по одному для каждой области интереса или области мозга. Я могу без проблем создавать точечные линейные графики, которые визуализируют данные для каждой рентабельности инвестиций:
#Dataframe creation and data import
df <- data.frame(matrix(NA, nrow = 6,
ncol = 1,
dimnames = list(1:6, "Age")))
df$Age <-c(rep("Child", 3), rep("Adult", 3))
df$Valence <- c(rep(c("Negative", "Mixed", "Positive"),2))
df$Cor <- c(0.319, 0.303, 0.278, 0.200, 0.230, 0.216)
df$ci <- c(0.0648, 0.0548, 0.0557, 0.0631, 0.0542, 0.0649)
#Plotting
ggplot(df, aes(x = Age, y = Cor, group = Valence, color = Valence)) +
stat_summary(geom="pointrange", position=position_dodge(width = .2), fun.data = NULL) +
stat_summary(geom="line", position=position_dodge(width = .2), fun.data = NULL) +
geom_errorbar(aes(ymin = Cor - ci, ymax = Cor + ci), size= 0.3, width=0.2, position=position_dodge(width = .2)) +
scale_fill_hue(name="Valence Type", breaks=c("Negative", "Mixed", "Positive"), labels=c("Negative", "Mixed", "Positive")) +
scale_x_discrete(name = "Age Groups",
labels = c("Child", "Adult")) +
scale_y_continuous(limits=c(0.10,0.40)) +
ggtitle("Representational Similarity By Age and Valence") +
labs(y="Mean Correlation Value") +
theme_bw() +
theme(title = element_text(face="bold", size=14)) +
theme(axis.text.x = element_text(size=14, color = "Black")) +
theme(axis.text.y = element_text(size=14, color = "Black"))
Однако мне бы очень хотелось объединить три отдельных графика в один, чтобы результаты всех три области интереса представлены на одном изображении; что-то вроде изображения ниже, где результаты каждой области интереса отображаются рядом друг с другом: Визуализация моих несоответствий в сценариях с помощью MS Paint
Мне не удалось найти решение для сценариев к этой проблеме, однако. Я подумал, может быть, я могу попробовать вложить значения оси X, поскольку это то, что я делаю концептуально, и это, конечно, не сработало. Я попытался объединить коэффициенты рентабельности инвестиций и возраста, так что тогда у меня были «Ребенок, ЭМИ», «Взрослый, ЭМИ», «Ребенок, NA cc», и т. Д. c., Но используя формат точечной линии, линии распространяется на ROI, что не идеально. Точечная линия - это мое предпочтение в визуализации из-за исследования предвзятости, присутствующей при чтении гистограмм, но если у кого-то есть хорошее решение этой проблемы с использованием гистограмм, я бы не стал с этим бороться.
Я включаю сводный фрейм данных и мой шаблонный скрипт ggplot ниже. Любая помощь, даже если она просто говорит мне, что то, что я пытаюсь сделать, невозможно, приветствуется!
#Dataframe creation and data import
df <- data.frame(matrix(NA, nrow = 18,
ncol = 1,
dimnames = list(1:18, "Age")))
df$Age <-c(rep("Child", 9), rep("Adult", 9))
df$Valence <- c(rep(c(rep("Negative",3), rep("Mixed",3), rep("Positive",3)),2))
df$ROI <- rep(c("AMY", "NAcc", "vmPFC"), 6)
df$Cor <- c(0.229, 0.268, 0.319, 0.236, 0.260, 0.303, 0.213, 0.236, 0.278, 0.188, 0.205, 0.200, 0.221, 0.226, 0.230, 0.208, 0.210, 0.216)
df$ci <- c(0.0474, 0.0675, 0.0648, 0.0445, 0.0456, 0.0548, 0.0531, 0.0518, 0.0557, 0.0485, 0.0727, 0.0631, 0.0336, 0.0541, 0.0542, 0.0430, 0.0604, 0.0649)
#Plotting
ggplot(df, aes(x = Age, y = Cor, group = Valence, color = Valence)) +
stat_summary(geom="pointrange", position=position_dodge(width = .2), fun.data = NULL) +
stat_summary(geom="line", position=position_dodge(width = .2), fun.data = NULL) +
geom_errorbar(aes(ymin = Cor - ci, ymax = Cor + ci), size= 0.3, width=0.2, position=position_dodge(width = .2)) +
scale_fill_hue(name="Valence Type", breaks=c("Negative", "Mixed", "Positive"), labels=c("Negative", "Mixed", "Positive")) +
scale_x_discrete(name = "Age Groups",
labels = c("Child", "Adult")) +
scale_y_continuous(limits=c(0.10,0.40)) +
ggtitle("Representational Similarity By Age and Valence") +
labs(y="Mean Correlation Value") +
theme_bw() +
theme(title = element_text(face="bold", size=14)) +
theme(axis.text.x = element_text(size=14, color = "Black")) +
theme(axis.text.y = element_text(size=14, color = "Black"))