Это график, который я хочу создать:
Однако я не хочу, чтобы вокруг легенды была рамка, а также круги внутри цветных квадратов.Я нашел похожий пробник здесь , но я не могу понять, как использовать его для моей задачи, потому что он по существу все еще использует символы этого графика.Интересно, почему ggplot2, пакет, который мне действительно нравится, так или иначе имеет такую глупость
Целевая легенда:
Код для воспроизведения сюжета:
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))