假设我创建了一个图表:
df <- data.frame(A = 1:100, B = jitter(1:100, 25), C = c('One', 'Two'))
p <- ggplot(df, aes(A, B, colour = C)) +
geom_point() +
scale_colour_manual(values = c('red', 'green'))
红色和绿色在 p
中存储在哪里?
我可以看到这里的函数调用中使用了调色板:
p$scales$scales[[1]]$palette
这个函数的内容包括:
function (n)
{
if (n > length(values)) {
stop("Insufficient values in manual scale. ", n, " needed but only ",
length(values), " provided.", call. = FALSE)
}
values
}
我认为颜色必须存储在
values
中,但我不知道它们实际上在p
中的位置。
附注:我看到了这个问题:如何从ggplot对象中提取填充颜色?。 但是对于我想做的事情,我无法构建图表。 我需要在构建之前获取颜色。
如果有一种递归搜索p
中的字符“red”或“green”的方法,那可能有助于找到这些值。
编辑:我最终要做的事情。
我正在尝试在绘制图表之前编辑图表。 这个想法是给定一些图表p
,你可以像这样做:
apply_theme(p)
整个图表(包括刻度、渐变等)都会应用一个配色方案。这是为了避免做一些像这样的事情:
p + some_theme + scales_colour_manual(values = plot_theme)
我正在尝试减少用户的工作量,以便他们可以将主题应用于整个图形,而不必担心是否在着色渐变、离散比例或其他方面。建立图形是部分解决方案。但我希望能够应用主题,仍然能够编辑图形。我已经能够编辑
p
,以便无论何时都会追溯地应用颜色到geoms。但我就是找不到如何使用比例颜色来实现这一点。我知道颜色肯定在其中某个地方!