2014-08-28 61 views
2

我想更改一組ggplots的點和線的默認顏色。你如何覆蓋默認的ggplot的點和線的美學?

當然,我可以定義一個顏色,然後顯式調用它在每一個情節:

my_colour <- "firebrick" 
ggplot(cars, aes(speed, dist)) + geom_line(colour = my_colour) 

我想偷懶,避免這種情況,每次打字。

應該有一個主題元素,我可以更新來改變這一點。我認爲這可能工作:

theme_update(
    line = element_line(colour = "firebrick", size = 2, linetype = 1, lineend = "butt") 
) 

但它沒有影響的情節線,並沒有一個點的等價物。我在help for themes中看不到任何其他可能的元素。

我可以通過破解內部GeomPath變量來強制覆蓋事物,但這是不好的形式,因爲我們不應該接觸內部對象。

gp <- ggplot2:::GeomPath 
gp$default_aes <- function(.) 
{ 
    aes(colour = "firebrick", size = 0.5, linetype = 1, alpha = NA) 
} 
assignInNamespace("GeomPath", gp, "ggplot2") 

什麼是正確的方式來改變點,線和其他geoms的默認美學?

回答

4

嗯,線索是在問題:update_geom_defaults

update_geom_defaults("point", list(colour = "firebrick")) 

我(最終)通過發現這一點:

ls("package:ggplot2", pattern = "default") 
+0

+1感謝,學到了一些東西 – BrodieG 2014-08-28 13:56:16

+0

@BrodieG我也是!如何寫下你的問題可以使你找到答案是令人驚訝的。 – 2014-08-28 14:01:51