如何让 cowplot 次要网格线成为标准的 ggplot 默认软灰色,而不是纯黑色
How to get cowplot minor grid lines to be the standard ggplot default soft grey, not solid black
library(tidyverse)
library(cowplot)
p1 <- ggplot(mtcars, aes(factor(cyl))) +
geom_bar(fill = "#56B4E9", alpha = 0.8) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
theme_minimal_hgrid()
p1
Cowplot v1.0.0 似乎工作正常。看上面。但是,当我尝试向上面的图中添加次要网格线时,事情发生了变化:
p1 + theme(panel.grid.minor.y = element_line())
为什么将网格线绘制为纯黑色而不是柔和的灰色?我知道我可能会指定 color = "lightgrey"
但我不确定 lightgrey 是否是匹配其他所有内容的正确灰色,并且更愿意使用默认值。我错过了什么吗?
发生这种情况是因为您正在使用的主题明确地将 panel.grid.minor
元素设置为 element_blank()
。当您随后设置 panel.grid.minor.y
时,它会从空白元素而不是主题的 panel.grid
元素继承其参数。 element_blank()
没有颜色,所以使用默认的黑色。
如果您将 panel.grid.minor
设置为 NULL
,则 x 和 y 次网格将从 panel.grid
:
继承它们的参数
p1 + theme(panel.grid.minor = NULL)
请注意,如果您使用连续的 x 轴,您还必须设置 panel.grid.minor.x = element_blank()
以避免在这种情况下出现垂直网格线。
由 reprex package (v0.2.0) 创建于 2019-08-14。
是正确的。但是,请注意 cowplot 提供了一个函数 background_grid()
专门用于简化此操作。您可以通过 major
和 minor
参数简单地指定您想要的主要和次要行。但是,默认的次要线条比主要线条更细,因此您还必须设置 size.minor = 0.5
以使它们看起来相同。
library(ggplot2)
library(cowplot)
#>
#> ********************************************************
#> Note: As of version 1.0.0, cowplot does not change the
#> default ggplot2 theme anymore. To recover the previous
#> behavior, execute:
#> theme_set(theme_cowplot())
#> ********************************************************
ggplot(mtcars, aes(factor(cyl))) +
geom_bar(fill = "#56B4E9", alpha = 0.8) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
theme_minimal_hgrid() +
background_grid(major = "y", minor = "y", size.minor = 0.5)
由 reprex package (v0.3.0)
于 2019-08-15 创建
library(tidyverse)
library(cowplot)
p1 <- ggplot(mtcars, aes(factor(cyl))) +
geom_bar(fill = "#56B4E9", alpha = 0.8) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
theme_minimal_hgrid()
p1
Cowplot v1.0.0 似乎工作正常。看上面。但是,当我尝试向上面的图中添加次要网格线时,事情发生了变化:
p1 + theme(panel.grid.minor.y = element_line())
为什么将网格线绘制为纯黑色而不是柔和的灰色?我知道我可能会指定 color = "lightgrey"
但我不确定 lightgrey 是否是匹配其他所有内容的正确灰色,并且更愿意使用默认值。我错过了什么吗?
发生这种情况是因为您正在使用的主题明确地将 panel.grid.minor
元素设置为 element_blank()
。当您随后设置 panel.grid.minor.y
时,它会从空白元素而不是主题的 panel.grid
元素继承其参数。 element_blank()
没有颜色,所以使用默认的黑色。
如果您将 panel.grid.minor
设置为 NULL
,则 x 和 y 次网格将从 panel.grid
:
p1 + theme(panel.grid.minor = NULL)
请注意,如果您使用连续的 x 轴,您还必须设置 panel.grid.minor.x = element_blank()
以避免在这种情况下出现垂直网格线。
由 reprex package (v0.2.0) 创建于 2019-08-14。
background_grid()
专门用于简化此操作。您可以通过 major
和 minor
参数简单地指定您想要的主要和次要行。但是,默认的次要线条比主要线条更细,因此您还必须设置 size.minor = 0.5
以使它们看起来相同。
library(ggplot2)
library(cowplot)
#>
#> ********************************************************
#> Note: As of version 1.0.0, cowplot does not change the
#> default ggplot2 theme anymore. To recover the previous
#> behavior, execute:
#> theme_set(theme_cowplot())
#> ********************************************************
ggplot(mtcars, aes(factor(cyl))) +
geom_bar(fill = "#56B4E9", alpha = 0.8) +
scale_y_continuous(expand = expansion(mult = c(0, 0.05))) +
theme_minimal_hgrid() +
background_grid(major = "y", minor = "y", size.minor = 0.5)
由 reprex package (v0.3.0)
于 2019-08-15 创建