在带有条形图和点的多面图中显示图例

问题描述 投票:0回答:1

我的图例将点覆盖在条形图例条目上。 enter image description here 我不想要“Shoot 1”等图例条目中的点。

这个答案部分解决了我的问题,尽管我认为我的

scale_shape_manual
行由于某种原因被忽略了。 这是我的数据:

shootdatalong <- structure(list(Location = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L), levels = c("Deer Arm", 
"Eastern Brook", "Lomond"), class = "factor"), Transect_type = structure(c(1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
2L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
3L, 3L, 3L), levels = c("deep", "mid", "shallow"), class = "factor"), 
    variable = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 
    2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 
    3L, 3L, 3L, 3L, 3L, 3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 
    4L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 
    5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 6L, 
    6L, 6L, 6L, 6L, 6L, 6L), levels = c("Veg_shoots", "Rep_shoots", 
    "Canopy_height", "Shoot_1_height", "Shoot_2_height", "Shoot_3_height"
    ), class = "factor"), value = c(18L, 9L, 9L, 12L, 7L, 10L, 
    11L, 11L, 9L, 10L, 12L, 10L, 15L, 28L, 22L, 16L, 39L, 26L, 
    22L, 23L, 47L, 14L, 17L, 47L, 70L, 58L, 9L, 35L, 34L, 28L, 
    11L, 6L, 14L, 5L, 4L, 9L, 2L, 5L, 8L, 6L, 41L, 39L, 54L, 
    82L, 83L, 68L, 76L, 63L, 72L, 71L, 7L, 15L, 48L, 41L, 18L, 
    30L, 27L, 0L, 44L, 13L, 21L, 23L, 32L, 14L, 26L, 22L, 42L, 
    21L, 30L, 16L, 1L, 3L, 0L, 4L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 
    2L, 2L, 2L, 3L, 2L, 3L, 5L, 1L, 0L, 5L, 1L, 1L, 2L, 2L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 
    4L, 12L, 2L, 27L, 31L, 12L, 10L, 0L, 22L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 3L, 2L, 0L, 0L, 0L, 1L, 10L, 0L, 
    3L, 1L, 40L, 45L, 50L, 50L, 60L, 50L, 50L, 45L, 55L, 55L, 
    55L, 45L, 40L, 40L, 40L, 35L, 45L, 50L, 55L, 45L, 18L, 15L, 
    15L, 18L, 15L, 12L, 15L, 25L, 20L, 30L, 100L, 60L, 45L, 45L, 
    45L, 50L, 55L, 40L, 50L, 55L, 18L, 0L, 25L, 25L, 25L, 20L, 
    20L, 15L, 15L, 18L, 10L, 15L, 20L, 12L, 13L, 18L, 15L, 0L, 
    17L, 15L, 30L, 35L, 25L, 15L, 25L, 20L, 25L, 25L, 30L, 30L, 
    45L, 62L, 62L, 65L, 37L, 57L, 59L, 40L, 70L, 75L, 60L, 35L, 
    55L, 45L, 38L, 37L, 47L, 47L, 48L, 50L, 21L, 16L, 23L, 15L, 
    17L, 16L, 15L, 25L, 23L, 35L, 60L, 48L, 49L, 40L, 65L, 55L, 
    65L, 45L, 55L, 70L, 24L, 29L, 24L, 25L, 26L, 28L, 22L, 20L, 
    22L, 22L, 15L, 18L, 25L, 16L, 22L, 15L, 20L, 0L, 20L, 18L, 
    38L, 40L, 26L, 22L, 27L, 22L, 30L, 15L, 30L, 50L, 52L, 50L, 
    58L, 65L, 77L, 52L, 50L, 42L, 65L, 70L, 65L, 55L, 52L, 35L, 
    40L, 32L, 45L, 42L, 38L, 48L, 22L, 18L, 12L, 25L, 19L, 17L, 
    18L, 26L, 19L, 26L, 80L, 35L, 45L, 60L, 62L, 48L, 25L, 42L, 
    52L, 55L, 25L, 22L, 15L, 28L, 28L, 22L, 28L, 22L, 40L, 25L, 
    11L, 12L, 22L, 14L, 14L, 22L, 20L, 0L, 21L, 16L, 37L, 36L, 
    18L, 20L, 22L, 25L, 37L, 40L, 37L, 47L, 50L, 50L, 50L, 58L, 
    60L, 57L, 55L, 45L, 55L, 78L, 58L, 60L, 52L, 30L, 35L, 32L, 
    48L, 42L, 45L, 45L, 15L, 15L, 15L, 15L, 14L, 14L, 18L, 27L, 
    15L, 18L, 110L, 55L, 55L, 62L, 48L, 22L, 68L, 46L, 45L, 38L, 
    25L, 30L, 28L, 32L, 31L, 30L, 18L, 18L, 17L, 21L, 14L, 18L, 
    15L, 17L, 12L, 22L, 16L, 0L, 19L, 18L, 39L, 30L, 23L, 18L, 
    32L, 38L, 33L, 25L, 46L, 29L)), row.names = c(NA, -420L), class = "data.frame")

这是我的情节代码:

ggplot(shootdatalong, aes(x=Location, y=value, fill=variable)
             ) +
  geom_bar(position="dodge", stat="identity", 
           data=subset(shootdatalong, variable==c("Shoot_1_height", "Shoot_2_height", "Shoot_3_height"))
           ) +
  stat_summary(data=subset(shootdatalong, variable=="Canopy_height"), 
               fun='mean', geom='point', size=3
               ) +
  facet_wrap(~Transect_type
             ) +
  theme_bw() +
  theme(panel.grid.major.x = element_blank(),
        panel.grid.major.y = element_line(linewidth =.1),
        axis.text.x = element_text(size=10),
        axis.title.x = element_blank(),
        axis.title.y = element_text(size=14),
        axis.text.y = element_text(size=12),
        axis.ticks.x = element_blank(),
        strip.background = element_rect(fill="#FFFFFF"),
        strip.text.x = element_text(size=10)
        ) +
  ggtitle("Average heights per transect type"
          ) +
  labs(y="Average height per transect (cm)", shape="NULL", color=NULL, fill=NULL
       ) +
  scale_fill_manual(labels = c("Canopy_height"="Canopy height", "Shoot_1_height"="Shoot 1", "Shoot_2_height"="Shoot 2", "Shoot_3_height"="Shoot 3"), 
                    values = c("Canopy_height"="#154360","Shoot_1_height"="#FF5733", "Shoot_2_height"="#1ABC9C", "Shoot_3_height"="#FFC300"),
                    aesthetics = c("color", "fill")
                    ) +
  scale_shape_manual(values=c("Canopy_height"=21, "Shoot_1_height"=NA, "Shoot_2_height"=NA, "Shoot_3_height"=NA)
                     ) +
  guides(fill=guide_legend(override.aes = list(fill=c(NA, "#FF5733", "#1ABC9C", "#FFC300")))
         )
r ggplot2 legend geom-bar
1个回答
1
投票

只需将

shape = 21
设置为
stat_summary
并删除所有不必要的东西,例如
scale_shape_manual
guides()
:

library(ggplot2)

ggplot(
  shootdatalong,
  aes(x = Location, y = value, fill = variable)
) +
  geom_col(
    position = "dodge",
    data = subset(
      shootdatalong,
      variable %in% c(
        "Shoot_1_height",
        "Shoot_2_height",
        "Shoot_3_height"
      )
    )
  ) +
  stat_summary(
    data = subset(shootdatalong, variable == "Canopy_height"),
    fun = "mean", geom = "point", size = 3, shape = 21
  ) +
  facet_wrap(~Transect_type) +
  theme_bw() +
  theme(
    panel.grid.major.x = element_blank(),
    panel.grid.major.y = element_line(linewidth = .1),
    axis.text.x = element_text(size = 10),
    axis.title.x = element_blank(),
    axis.title.y = element_text(size = 14),
    axis.text.y = element_text(size = 12),
    axis.ticks.x = element_blank(),
    strip.background = element_rect(fill = "#FFFFFF"),
    strip.text.x = element_text(size = 10)
  ) +
  labs(
    title = "Average heights per transect type",
    y = "Average height per transect (cm)",
    fill = NULL
  ) +
  scale_fill_manual(
    labels = c(
      "Canopy_height" = "Canopy height",
      "Shoot_1_height" = "Shoot 1",
      "Shoot_2_height" = "Shoot 2",
      "Shoot_3_height" = "Shoot 3"
    ),
    values = c(
      "Canopy_height" = "#154360",
      "Shoot_1_height" = "#FF5733",
      "Shoot_2_height" = "#1ABC9C",
      "Shoot_3_height" = "#FFC300"
    )
  )

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.