2013-01-13 140 views
3

是否有可能,在GGPLOT2,上色標籤一組點?彩色化標籤一組點

我想顏色一些在下面的圖中的左手側的文本標籤,以顯示紅色的搖擺州中,除了劇情本身顯示的紅色標記:

electoral dot plot

The code (with data) is here. - 編輯,以反映答案

  • 我知道how to colour all labelshere too),但是這不是我所需要的在這裏。
  • 理想的情況下,我也希望能夠提升的傳說,但我不確定究竟如何。

情節是遠遠不夠完善,因此額外的建議都非常歡迎。有far better graphs在那裏,如果任何人的興趣(但我不夠好,他們的代碼)。標籤(軸文本)的

+0

在你的鏈接顏色的標籤,而不是僅僅用「紅」,你可以使用的藍色和紅色等顏色載體,在它們出現在軸的順序着色標籤 –

回答

5

顏色由參數element_text=在功能theme()設置。您可以爲每個標籤設置不同的顏色。由於有一列Swing與水平,它可以用於設置顏色。

dw_plot + theme(axis.text.y = element_text(colour = ifelse(dw_data$Swing=="Swing State","red","grey"))) 
+0

輝煌!非常感謝你。 [documentation](http://docs.ggplot2.org/current/element_text.html)應該提到這一點。祝你今天愉快。您的理解,在交叉驗證,並再次感謝 - –

3

其他答案已被接受,但只是作爲一種視覺的例子......對於更復雜的方案,你可以簡單地添加一列以所需的顏色和參考的數據幀,而不是使用的「紅」,「黑色',如下所示。

library(ggplot2) 

set.seed(1234) 
x <- data.frame(state = paste("State_", LETTERS, sep = ""), 
    margin = runif(26, -50, 50), swing = rep("no", 26)) 
x[c(10:15), 'swing'] <- "yes" 
mycolours <- c("yes" = 'red', "no" = "black") 

ggplot(data = x, aes(x = margin, y = state)) + 
    geom_point(size = 5, aes(colour = swing)) + 
    scale_color_manual("Swing", values = mycolours) + 
    theme(axis.text.y = element_text(colour = 
     ifelse(x$swing == 'yes', 'red', 'black'))) + 
    theme() 

screenshot

+0

你的方法可能比我的代碼更簡單,這樣的感謝。然而,由於2008/2012 /搖擺三個要素,我的數據稍微複雜一些。我希望將來能夠簡化代碼。 –

+0

@Fr。是的,您的數據(和圖表)更復雜,但這只是一個最小可重現的例子。我查看了你的原始代碼,它看起來很有用,所以我認爲你可以將所有東西修補到一起。 – SlowLearner