ggplot2:如何在图例键中分隔geom_polygon和geom_line?

IloveCatRPython

我想要:

  • 删除geom_polygon图例键内的行,然后
  • 删除geom_line图例键周围的边框。

所需的输出将是

在此处输入图片说明

到目前为止,我的尝试失败。预先感谢您的任何帮助!

library(ggplot2)

set.seed(1337)

dat <- structure(list(id = structure(c(2L, 2L, 2L, 2L), 
                                    .Label = c("1.1", "1.2", "1.3", "2.1", "2.2", "2.3"), 
                                    class = "factor"), 
                     value = c(3.1, 3.1, 3.1, 3.1),
                     x = c(2.2, 1.1, 1.2, 2.5), 
                     y = c(0.5, 1, 2.1, 1.7)), 
                class = "data.frame", 
                row.names = c(NA, -4L))

line <- data.frame(
  x = cumsum(runif(50, max = 0.1)),
  y = cumsum(runif(50, max = 0.1))
)

ggplot(dat, aes(x = x, y = y)) +
  geom_polygon(aes(color = "Border", group = id), fill = NA) +
  geom_line(data = line, aes(colour = "Line"), size = 1) +
  theme(legend.background = element_rect(fill = "transparent"), 
        legend.box.background = element_rect(fill = "transparent", colour = NA),
        legend.key = element_rect(fill = "transparent"))

卡米尔

我看到了一些技巧,这是一个很好的问题。这很棘手,因为两个几何图形都映射到颜色,并且每种美学只能得到一个图例。这是一种方法:实际制作单独的图例,每个图例具有不同的美学效果,并将它们伪装成一个图例。

对于线条,我没有将其映射为颜色,而是将“ Line”映射为线型并对颜色进行了硬编码。然后,将线型比例设置为1,以实线表示。在中guides,我取出了线型的标题并设置了顺序,以便颜色首先出现,然后是线型。现在有两个图例,但下一个没有标题。为使它们看起来像一个连续的图例,请在图例之间设置一个负间距。当然,如果您还有其他图例,这将无法正常工作,在这种情况下,您将需要一些不同的技巧。

library(ggplot2)

ggplot(dat, aes(x = x, y = y)) +
  geom_polygon(aes(color = "Border", group = id), fill = NA) +
  geom_line(aes(linetype = "Line"), data = line, color = "blue") +
  scale_linetype_manual(values = 1) +
  guides(linetype = guide_legend(title = NULL, order = 2), color = guide_legend(order = 1)) +
  theme(legend.background = element_rect(fill = "transparent"), 
        legend.box.background = element_rect(fill = "transparent", colour = NA),
        legend.key = element_rect(fill = "transparent"), 
        legend.spacing = unit(-1, "lines") )

请注意,您可以使用多种不同的美学组合,而不仅仅是颜色+线型。您可以改为映射到多边形的填充上,然后将其alpha设置为0,以便创建填充图例,但实际上并没有显示为填充。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

ggplot2:没有填充的geom_polygon

ggplot2:合并geom_line,geom_point和geom_bar的图例

ggplot:如何在geom_polygon中产生渐变填充

在ggplot2地图/ geom_polygon中仅绘制外边界

如何在ggplot2的geom_line中显示百分比?

ggplot2中带有geom_line和geom_point的图例

在ggplot2上叠加ggmap,geom_polygon(shape文件)

ggplot2进行的映射geom_polygon在合并数据后变得疯狂

如何为我的ggplot添加图例?我正在使用geom_line和geom_ribbon

如何在Shiny-R中的ggplot2中的geom_line和geom_bar可视化之间切换

如何在ggplot2中获取堆叠的geom_bar和geom_point的通用图例?

ggplot2-结合了geom_point和geom_line的图例

如何在Power Bi中的R中的ggplot2 geom_line函数中排除零

如何在折线图(geom_line)R ggplot2上删除一个点?

ggplot2:geom_polygon覆盖凸凸类的问题

在离散x轴上绘制ggplot2 geom_polygon

使用geom_point()和geom_line()进行多个系列的ggplot中的图例错误

ggplot:为什么为geom_ribbon和geom_line都打印图例?

ggplot:如何将图例添加到由几个geom_ribbon()和geom_line()组成的绘图中?

ggplot2:将geom_line和geom_point组合在一起的图形中的坐标图例

ggplot2 geom_line()跳过NA值

当我同时拥有geom_line和geom_hline时,如何在ggplot2中获得组合图例

结合ggplot geom_point和geom_line图产生的冗余图例

geom_line ggplot2 中同一组的两个不同图例

ggplot2 geom_line 魔术与基础 R?

如何在 ggplot 混合 geom_rect 和 geom_line 中对区域进行着色?

如何为 ggplot2 (R) 中的多个 geom_line 图创建具有不同 alpha 的图例

如何为ggplot2中的每个geom_line添加标签和点?

Ggplot2:在一个图中使用 scale_fill_manual() 为 geom_rect() 和 geom_line() 创建图例?