【问题标题】:creating columns within a legend list while using ggplot in R code在 R 代码中使用 ggplot 时在图例列表中创建列
【发布时间】:2026-02-16 17:40:02
【问题描述】:

我正在使用ggplot(包名:ggplot2)绘制 15 条线,每条线代表一个单独的实体,并希望为其创建一个图例。但是,我无法将图例条目分成一列以上。有人可以建议如何在 ggplot 环境中做同样的事情。

目前,我正在使用以下命令来创建图例:

opts(title=plotName,legend.position='bottom')

但是,这会给出一个单列图例。结果,图表中的大部分区域被图例本身占据。将它分成 2 或 3 列确实有助于解决问题,同时将图例保持在图表的底部。 我也试过legend.direction,但是这个命令在一行中显示图例,这也是不可取的,除非我可以将它分布在 2-3 行中。

opts(title=plotName,legend.position='bottom',legend.direction="horizontal")

提前致谢, 穆尼什

【问题讨论】:

    标签: r ggplot2


    【解决方案1】:

    使用 ggplot 的新主题环境只需要一个简单的:+ guides(col=guide_legend(ncol=2)) 将您的图例格式化为 2 列。

    【讨论】:

      【解决方案2】:

      您可以使用guide_legend() 来控制 ggplot 图例的布局和外观。特别是,它接受参数nrowncol,这就是你所追求的。

      这是一个来自非常有用的文档Changes and additions to ggplot2-0.9.0.pdf 的第 2 节的示例。

      library(ggplot2)
      
      q <- ggplot(diamonds, aes(x = table, fill = clarity)) +
           geom_histogram() +
           scale_y_continuous()
      
      q + guides(fill = guide_legend(nrow = 4, title.hjust = 0.4,
              title.theme = theme_text(size = 12, face = "bold"))) +
      xlim(45, 75)
      

      【讨论】:

      • 该链接不再可用。任何线索,我在哪里可以得到类似的文章?
      • @classy_BLINK 搜索文档的名称,我找到了一个副本here