說我創造一個情節:存儲在ggplot2對象中的比例顏色在哪裏?
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
的實際位置。
P.s.我見過這個問題:How to extract the fill colours from a ggplot object?。但對於我想要做的事情,我無法建立情節。我需要在製造之前弄清楚顏色。
如果有對人物遞歸搜索p
某種方式「紅色」或「綠色」,可能會幫助找到這些值。
編輯:我最終試圖做什麼。
我想他們繪製之前編輯地塊。這個想法是,給定的一些情節p
你可以做這樣的事情:
apply_theme(p)
...和顏色方案應用於整個小區(包括規模,漸變等)。這是爲了避免不得不做這樣的事情:
p + some_theme + scales_colour_manual(values = plot_theme)
我試圖通過爲用戶減少工作量,使他們可以將主題應用到整個情節,而不必擔心他們是否填色漸變,離散比例或其他。
構建情節的部分解決方案。但我希望能夠應用這個主題,並且仍然可以在稍後編輯該圖。
我已經能夠編輯p
所以,無論顏色追溯適用於geoms。但我無法找到如何使用縮放顏色來實現這一點。我知道顏色必須在某處!
對不起,我剛纔看到你不能建立情節。因此,我刪除了我的答案。你能解釋爲什麼建立劇情不是一種選擇嗎? – Roland
@Roland添加了編輯。也許我正在以完全錯誤的方式去解決這個問題。 – MadScone