2014-09-24 160 views
1

我喜歡編寫一個函數,該函數全局設置特定的主題選項併爲ggplot對象調整美學效果,與ggthemr-package相當。熱點更改/設置ggplot的全球尺度美學/顏色?

我可以修改主題選項與下面的代碼-片段:

sjtheme <- theme_grey() + 
    theme(axis.text.x = element_text(angle=axis.angle.x, size=rel(axis.size.x), colour=axis.color.x), 
     axis.text.y = element_text(angle=axis.angle.y, size=rel(axis.size.y), colour=axis.color.y), 
     axis.title = element_text(size=rel(axis.title.size), colour=axis.title.color), 
     axis.ticks = element_line(colour=axis.ticks.color), 
     axis.ticks.length = unit(axis.ticks.length, "cm"), 
     plot.title = element_text(size=rel(title.size), colour=title.color), 
     plot.background = element_rect(colour=plot.bordercol, fill=plot.backgroundcol), 
     panel.background = element_rect(colour=panel.bordercol, fill=panel.backcol), 
     panel.grid.minor = element_line(colour=panel.minor.gridcol), 
     panel.grid.major = element_line(colour=panel.major.gridcol)) 
theme_set(sjtheme) 

的geom缺省值可以例如被改變與

update_geom_defaults('boxplot', list(fill = geom.colors, alpha = geom.alpha, outlier.colour = geom.colors)) 

現在這兩個效果很好,所以每當我創建一個ggplot對象,我的主題和幾何選項應用。

但是,我如何使用比例來做到這一點,所以酒吧/點/線顏色也得到一個新的默認?

有一個在ggthemr封裝解決方案:https://github.com/cttobin/ggthemr/blob/master/R/theme_scales.R

然而,這種方法改變了地球環境,這將違反CRAN提交政策。我在網上搜索eninge發現的所有建議都不起作用,如「set_scale_defaults」(已在新版ggplot版本中刪除)或this postingthis posting

那麼,是否有可能改變不改變用戶的全球環境的規模默認值?

回答

2

你可以簡單地重新定義相關的規模,

scale_colour_discrete <- function(...) 
    scale_colour_brewer(..., palette="Set1") 
+0

在某些情況下,你的解決方案有效,在其他情況下並非如此。但是,我還沒有弄清楚什麼時候以及爲什麼?當我覆蓋scale_fill ...時,具有閃避條的圖不適用修改過的主題。但是,如果我手動向ggplot對象添加'+ scale_fill ...',我會得到警告:scale_fill存在,將被覆蓋。那麼,爲什麼我的重新定義的規模不適用?嗯......如果可以通過主題選項設置幾何顏色,這將是非常好的,因爲這看起來很完美。我想,我會爲我的繪圖功能保留一個「欄顏色」參數。 – Daniel 2014-09-25 08:48:10

+0

沒有一個例子就很難說清楚......關於你對主題和幾何默認的觀點,我完全同意,並且在過去幾次提出了一些沿着這些觀點的東西。這不會不幸發生,ggplot2不再被開發。 – baptiste 2014-09-25 10:38:22

+0

沒錯,一個例子會很有幫助。然而,所有這些東西都集成在我的包中,但是我可以將最新的代碼提交給GitHub,因此任何人都可以檢查源代碼 - 我想這可能是太多工作,所以我試圖用「通用」辦法。順便說一句,你在哪裏讀過ggplot2沒有被開發出來? – Daniel 2014-09-25 12:46:38