ggplot2: просто использование цветов в легенде (без символов для графиков) - PullRequest
0 голосов
/ 18 мая 2018

Это график, который я хочу создать: enter image description here

Однако я не хочу, чтобы вокруг легенды была рамка, а также круги внутри цветных квадратов.Я нашел похожий пробник здесь , но я не могу понять, как использовать его для моей задачи, потому что он по существу все еще использует символы этого графика.Интересно, почему ggplot2, пакет, который мне действительно нравится, так или иначе имеет такую ​​глупость

Целевая легенда: enter image description here

Код для воспроизведения сюжета:

library(ggplot2)
library(plyr)

N   <- 25
IV1 <- c('level1', 'level1', 'level1', 'level1', 'level1', 'level1', 'level1', 'level1', 'level2', 'level2', 'level2', 'level2', 'level2', 'level2', 'level2', 'level2')
IV2 <- c('level1', 'level1', 'level1', 'level1', 'level2', 'level2', 'level2', 'level2', 'level1', 'level1', 'level1', 'level1', 'level2', 'level2', 'level2', 'level2')
IV3 <- c('level1', 'level1', 'level2', 'level2', 'level1', 'level1', 'level2', 'level2', 'level1', 'level1', 'level2', 'level2', 'level1', 'level1', 'level2', 'level2')
IV4 <- c('level1', 'level2', 'level1', 'level2', 'level1', 'level2', 'level1', 'level2', 'level1', 'level2', 'level1', 'level2', 'level1', 'level2', 'level1', 'level2')

exampleData <- data.frame(subNum = rep(1:N, each = 16),
                          DV     = rnorm(N*length(IV1)),
                          IV1    = factor(rep(IV1, N), levels = c('level1', 'level2')),
                          IV2    = factor(rep(IV2, N), levels = c('level1', 'level2')),
                          IV3    = factor(rep(IV3, N), levels = c('level1', 'level2')),
                          IV4    = factor(rep(IV4, N), levels = c('level1', 'level2')))

exampleDataSummary <- ddply(exampleData, 
                            c('IV1', 'IV2', 'IV3', 'IV4'), 
                            summarise,
                            meanDV = mean(DV),
                            N = length(DV),
                            sdDV = sd(DV),
                            seDV = sdDV/sqrt(N))

plot <- ggplot(exampleData, aes(y = DV, x = IV1, fill = IV2))
plot + facet_grid(IV3 ~ IV4) + 
  geom_dotplot(binaxis = "y", alpha = 0.7, stackdir = "center", position = position_dodge(width = 1)) +
  geom_violin(aes(y = DV, fill = IV2), alpha = 0.5, position = position_dodge(width = 1)) +
  geom_point(aes(y = meanDV, x = IV1), data = exampleDataSummary, position = position_dodge(width = 1)) +
  geom_errorbar(aes(y = meanDV, ymin = meanDV - seDV, ymax = meanDV + seDV),
                color = "black", width = 0.2, data = exampleDataSummary, position = position_dodge(width = 1))

1 Ответ

0 голосов
/ 18 мая 2018

Выключите ненужные элементы легенды в соответствующих геомах и затем используйте override.aes:

plot + facet_grid(IV3 ~ IV4) + 
  geom_dotplot(binaxis = "y", alpha = 0.7, stackdir = "center", 
                 position = position_dodge(width = 1), show.legend = FALSE) +
  geom_violin(aes(y = DV, fill = IV2), alpha = 0.5, position = position_dodge(width = 1)) +
  geom_point(aes(y = meanDV, x = IV1), data = exampleDataSummary, 
               position = position_dodge(width = 1), show.legend = FALSE) +
  geom_errorbar(aes(y = meanDV, ymin = meanDV - seDV, ymax = meanDV + seDV),
                color = "black", width = 0.2, data = exampleDataSummary, position = position_dodge(width = 1)) +
  guides(fill = guide_legend(override.aes = list(color = NA, alpha = 1)))

resulting plot

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...