2017-10-08 136 views
0

我正在製作很多地塊,並且希望爲數據標籤設置默認顏色,而不必將color參數傳遞給每個geom_text調用。我可以爲繪圖標題和座標軸,但不是數據標籤。如何在R ggplot2中設置默認的geom_text顏色?

# Example of how to set default color for other text elements 
library(ggplot2) 
theme_set(theme_bw() + theme(text = element_text(color = "red"), 
          axis.text = element_text(color = "red"))) 
ggplot(mtcars, aes(x = cyl, label = ..count..)) + 
    geom_bar() + 
    geom_text(stat = "count") + 
    labs(title = "title") 
+2

一個可能的解決方案,可在http://ggplot2.tidyverse.org/reference/update_defaults.html找到。 'update_geom_defaults(「text」,list(color =「red」)); ggplot(mtcars,aes(mpg,wt))+ geom_text(label = hp)' – bdemarest

+0

@bdemarest作爲回答? – dww

+0

@bdemarest這是我正在尋找的解決方案。你應該回答 –

回答

2

不幸的是,我認爲主題元素僅僅是爲了適用於情節的非數據相關的元素,這意味着該主題不包括在geom_text文本。默認顏色"black"geom_text的源代碼中被硬編碼,所以據我所知,沒有簡單的方法來覆蓋它。 (不過,如果有人在意糾正我,優秀!)

但是,一個簡單的解決方案可以幫助簡化事情是創建一個包裝函數,它將返回一個geom_text所有默認值,您將一遍又一遍地傳遞。例如:

geom_text_wrap <- function(col="red", ...) { 
    geom_text(col=col, ...) 
} 

可以代替geom_text直接使用,並且會在默認情況下,創建紅色文本。因此,以下內容將創建紅色文本,而不必直接在繪圖創建中指定它。

ggplot(mtcars, aes(x = cyl, label = ..count..)) + 
    geom_bar() + 
    geom_text_wrap(stat="count") + 
    labs(title = "title") 

注:如果你真的要創建一噸的類似地塊,以你是累人指定重複參數的點,你可以考慮編寫將編程創建完整的圖形對象的功能。這將取決於您的具體使用情況。

相關問題