2
我正在開發一個包含使用ggplot2的繪圖函數的包。我想更改默認比例的顏色,但不會影響全球環境。我正在爲scale_colour_continuous分配一個新函數,並使用一組新的默認顏色。更改函數內的默認ggplot2縮放比例
library(ggplot2)
dat <- data.frame(a = 1:5, b = 1:5)
home.plot <- function(x){
scale_colour_continuous <- function(...) ggplot2::scale_colour_continuous(..., low = "purple", high = "green")
ggplot(dat, aes(x = a, y = b)) + geom_point(aes(colour = a), size = 10)
}
home.plot(dat)
這不起作用,顏色不會從黑色和藍色變爲紫色和綠色。我想這是因爲ggplot2在home.plot函數的環境之外尋找scale_colour_continuous()函數。
如果我們嘗試相同的,但在全球環境下它的工作原理:
scale_colour_continuous <- function(...) ggplot2::scale_colour_continuous(..., low = "purple", high = "green")
ggplot(dat, aes(x = a, y = b)) + geom_point(aes(colour = a), size = 10)
但是這改變ggplot的行爲爲所有後續情節,而不僅僅是那些由home.plot創建。
我知道我可以通過+ scale_colour_continuous()創建ggplot對象後更改顏色,但home.plot不知道用戶是繪製了一個離散變量還是連續變量,因此我需要更改行爲在ggplot對象創建之前的比例尺。
任何幫助表示讚賞。
謝謝你的回答。我寧願避免使用其他解決方案。在包中,我繪製了幾個層次和比例相當複雜的圖表,並且他們需要大量的if()s。 –
「if」只是顯示可能性,你可以跳過它,只是紫綠色的梯度 – Pigeon
如果不清楚我打算完成什麼,我很抱歉。正如我在上面的帖子中所寫的,我知道我可以在ggplot創建對象後更改比例。這不夠靈活,因爲我不知道繪圖函數中輸入變量的特徵。他們可能是數字向量和因素。 –