2013-01-13 1 views
3

ggplot2에서 포인트 그룹에 대한 라벨을 컬러화 할 수 있습니까?포인트 그룹에 대한 라벨 색상 화

내가 플롯 자체에 표시된 빨간색 마커에 더하여, 붉은 색에서 스윙 상태를 보여주기 위해 아래의 그래프의 왼쪽 측 텍스트 라벨의 일부 색상을 좋아하는 것 :

electoral dot plot

The code (with data) is here. - 대답

  • 을 반영 편집 나는 how to colour all labels (here too) 알고 있지만, 그게 내가 여기에 필요하지 않습니다.
  • 이상적으로 나는 또한 전설을 향상시키고 싶지만 정확히 어떻게 확신 할 수 있는지 모르겠다.

플롯은 완벽하지 않으므로 추가 제안을 환영합니다. 누구든지 관심이있는 경우에는 far better graphs이 있습니다 (하지만 코드를 작성할만큼 좋지는 않습니다).

+0

, 대신에 단지 그들이 당신의 축에 나타나는 순서대로 레이블을 착색, "빨간색"당신은 파란색과 빨간색 등의 색상 벡터를 사용할 수있는 사용 –

답변

5

레이블 색상 (축 텍스트)은 인수로 설정되며 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

귀하의 방법은 제 코드보다 간단 할 수 있습니다. 감사합니다. Cross Validated에서 귀하의 이해를 다시 한번 감사드립니다. 그러나 내 데이터는 2008/2012/스윙 세 요소로 인해 좀 더 복잡합니다. 앞으로 코드를 단순화하기를 희망합니다. –

+0

@Fr. 예, 데이터 (및 차트)는 좀 더 복잡하지만 재현 할 수있는 최소한의 예일뿐입니다. 나는 당신의 원래 코드를 보았고, 그것들을 함께 패치 할 수있을 것이라고 생각할 정도로 보수적 인 것처럼 보였다. – SlowLearner