ggplot-更改主题中图例图标的形状

时间:2019-01-22 03:14:32

标签: r ggplot2

是否可以制作一个主题,以更改用于标识绘图中不同颜色的图例图标/符号的形状?

我的意思是,如果您绘制线图:

library(ggplot2)

ggplot(iris, aes(x=Sepal.Length, y = Sepal.Width, color=Species)) +
  geom_line()

您将看到“细”线标识每个不同的组。我不喜欢这个。

我想要的是始终使我的颜色标识符像这样漂亮的实心方块/块:

ggplot(iris, aes(x=Sepal.Length, y = Sepal.Width, color=Species, fill=Species)) +
  geom_bar(stat='identity')

我想知道是否可以添加到自定义ggplot主题以默认启用此选项?我有一些针对情节的定制主题,我希望能够添加它,因为有时很难分辨出非常微弱的线条或点。实心正方形更加引人注目。

1 个答案:

答案 0 :(得分:1)

我认为theme()不允许您覆盖图例关键符号中的特定美学参数。它处理图例键的大小,背景等,而draw_key_XXX覆盖键符号的外观。

但是,如果您担心要重新键入,则可以将guides(...)添加到自定义主题:

theme_customized <- function(...){
  list(guides(color = guide_legend(override.aes = list(size = 10))),

       # optional: the base theme you modify from
       theme_light(), 

       # customized theme options for your theme
       # (I'm using axis.text / panel.grid for illustration)
       theme(axis.text = element_text(size = 15),
             panel.grid.minor.y = element_blank()),

       # any theme options that you may want to set
       # on an ad hoc basis
       theme(...))
}

使用自定义主题:

gridExtra::grid.arrange(

  # with ggplot's default theme_grey
  ggplot(iris, aes(x=Sepal.Length, y = Sepal.Width, color=Species)) +
    geom_line(),

  # customized theme with default options
  ggplot(iris, aes(x=Sepal.Length, y = Sepal.Width, color=Species)) +
    geom_line() +
    theme_customized(),

  # customized theme with additional adhoc specifications
  ggplot(iris, aes(x=Sepal.Length, y = Sepal.Width, color=Species)) +
    geom_line() +
    theme_customized(axis.title = element_text(color = "blue"),
                     panel.background = element_rect(fill = "darkgrey")),
  ncol = 1
)

illustration