【问题标题】:ggplot2: Just using colours in legend (no symbols for plots)ggplot2:仅在图例中使用颜色(绘图没有符号)
【发布时间】:2018-05-18 07:18:36
【问题描述】:

这是我要创建的情节:

但是,我不想要图例周围的框架,也不想要彩色方块内的圆圈。我发现了一个类似的问题here,但我不知道如何使用它来解决我的问题,因为它基本上仍然使用该图的符号。我想知道为什么我真正喜欢的包 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))

【问题讨论】:

    标签: r plot ggplot2


    【解决方案1】:

    关闭相应几何图形中不需要的图例元素,然后使用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)))
    

    【讨论】:

      猜你喜欢
      • 2021-08-26
      • 1970-01-01
      • 2017-12-28
      • 1970-01-01
      • 2021-01-09
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      相关资源
      最近更新 更多