2013-04-24 134 views
4

我與這些命令創建下面的情節:更改文本顏色GGPLOT2單方面

ggplot(long.data, aes(owner,value)) + stat_summary(fun.y=mean,geom="bar", 
     fill=c("deepskyblue","deepskyblue4")) + 
     stat_summary(fun.data=mean_cl_normal,geom="errorbar",position= 
     position_dodge(width=.90),width=.1) + 
     labs(x="",y="") + facet_grid(IV~experiment+type,scales="free_y") + 
     theme(strip.text.y = element_text(colour = 'red4')) 

如果我想改變文字顏色(也可能是背景顏色),只對上面的x小(在這種情況下,「隱式」和「顯式」級別),我該怎麼做?可能嗎?我沒有在ggplot2文檔中讀過任何內容。

安德烈

plot

編輯:我的混亂很抱歉。我的目標是改變其中一個上面條的文字和背景顏色,而不是顏色。

+0

做背景當然是可行的;看到[這](http://stackoverflow.com/questions/10267583/programmatically-specifying-colours-in-scale-fill-manual-ggplot-call)的問題。可以通過爲顏色添加變量來類似地處理文本。 – SlowLearner 2013-04-24 13:15:11

+0

是的,在你發佈的鏈接中,問題是改變完整圖的背景。我只想改變其中一個facet標籤的文字顏色(和背景)。 – 2013-04-24 13:29:51

+0

我已經這樣做了,我想通過設置我不想着色爲'NULL'的方面的變量。仔細閱讀,你應該得到它。 – SlowLearner 2013-04-24 13:31:47

回答

2

我得到一個warning ...但是這似乎是一個很好的起點,更優雅的解決方案:

ggplot(mtcars) + geom_rect(data = subset(mtcars, cyl == 4), aes(fill = cyl),xmin = -inf,xmax = Inf, ymin = -Inf,ymax = Inf, alpha = 0.05) + 
    geom_point(aes(mpg, wt)) + facet_grid(. ~ cyl) 

enter image description here

+0

也許我的解釋不是很清楚,所以我就此向你道歉。從根本上說,我的目標是使(例如)紅色的「隱含」和「明確」這兩個詞成爲可能,並且還可以使相對背景顏色從灰色變成(比如說)橙色。 – 2013-04-24 13:28:31

+0

@ this.is.not.a.nick,因爲你已經爲垂直標籤做了這些(使它們變成紅色)我想你想要的東西我還沒有得到,對此抱歉。 – Michele 2013-04-24 13:34:26

6

你想改變strip元素的屬性,而不是面。嘗試像下面的代碼。請注意,這是一個基於隨機構成的假數據的最小示例,因爲您沒有提供自己的數據供我們使用。您必須根據需要調整代碼。

require(reshape) 
require(ggplot2) 
require(scales) 

# fake data 
mydf <- data.frame(val1 = runif(10, 0, 1), val2 = runif(10, 0, 1)) 
mydf 

# reshape to long format 
long.data <- melt(mydf) 
long.data$facetvar <- "implicit" 
long.data$facetvar[seq(1, 19, 2)] <- "explicit" 
long.data 

# plot 
ggplot(long.data, aes(y = value, x = variable)) + 
    geom_bar(position = 'dodge', stat = "identity") + 
    facet_wrap (~ facetvar) + 
    theme(strip.background = element_rect(fill = alpha('green', 0.3))) + 
    theme(strip.text.x = element_text(colour = 'blue', size = 10)) 

這會產生這樣一個情節:一個答案 screenshot

請注意,你已經等待了很長一段時間(由堆棧溢出將R社區的標準),因爲你的問題不是清楚,因爲您沒有提供完全可複製的代碼和數據,我們可以將其複製並粘貼到我們自己的R安裝中。如果你這樣做了,那麼比我更有知識的人會在一個小時內回答這個問題。請參閱this非常有用的帖子,瞭解如何提出下一個問題的提示。

+0

感謝您的回答。在我的情況下,我有兩個上面的條(如此兩個因素),我只想改變它們中的一個的顏色。所以帶隱式/顯式的將是(比方說)紅色,並且帶體/對象將是(比方說)橙色。 'strip.text.x'可以用於選定的條帶嗎? – 2013-04-25 07:54:43

+1

我不知道。你試過了嗎?由於我沒有你的數據(或者像你真實的數據一樣安排「假」數據),我不能在沒有很多猜測和不便的情況下進行實驗。這是爲什麼你應該包含數據的典型例子。我的建議是嘗試看看。 – SlowLearner 2013-04-25 08:09:07