我创建了一个ggplot,我使用了viridis
包中的三种特定颜色。
下面是我的代码:
library(tidyverse)
library(viridis)
iris %>%
ggplot(aes(Petal.Length)) +
geom_histogram(aes(alpha = 0.5), fill = viridis(3)[2]) +
geom_boxplot(aes(y = 1), alpha = 0.5, width = 2, lwd = 1.5, fill = viridis(3)[3], color = viridis(3)[1]) +
guides(alpha = "none")
它产生了这个图:
我的问题是颜色是硬编码的。一方面,我使用的是viridis色标,所以当前的代码是多余的。此外,当我全局更改色标时,首先不要将其设置为viridis,我需要更改代码,当它作为一个函数从包中调用时,这很麻烦。
因此,我尝试访问ggplot 2默认的pallete。我看了getOptions()
和palette()
,但都没有我想要的。我也环顾四周,但只找到了访问特定调色板的方法。理想情况下,有像current_default_palette(n)[k]
这样的东西来手动设置颜色。
有什么想法吗?谢谢!
2条答案
按热度按时间xxls0lw81#
如果你看一下
scale_fill_discrete()
的代码,你可以看到它的默认值(如果在调用函数时没有设置type
,并且没有全局设置选项“ggplot2.discrete.fill”)为scale_fill_hue
,所以这可能就是你要找的:类似地,
scale_colour_discrete
默认为scale_colour_hue
...我不确定这是否有帮助,但你可以通过
ggplot_build
检索ggplot正在使用的 * 特定 * 颜色的信息(* 不是 * 调色板的名称)。如果当前打印另存为gg0
,则这确实有点令人困惑,但是:
lapply()
在图的 * 层 * 上迭代(每个层都是ggplot_build()
输出的$data
元素的单独元素colour
和fill
列的 unique 元素。在本例中,第一个元素(直方图)只指定了填充(因此颜色列都是NA
),而第二个元素(条形图)同时指定了颜色和填充。c型xoshrz7s2#
您可以修改美学默认值:
创建于2023-06-14带有reprex v2.0.2