2017-05-09 1 views
1

R 막대 차트의 특정 막대에 대해 다른 색상을 사용하려면 어떻게해야합니까? 특정 모음 모음이 동적으로 변경됩니다.barchart의 막대 세트에 대한 R 색이 다릅니다.

enter image description here

뒤에, 나는 데이터의 마지막 3 개월을 찾아 그뿐만 아니라, 그 막대에 대해 서로 다른 색상을 적용해야 논리, 난에 그 달에 동일한 색상을 적용해야 지난 해.

이제는 2017 년 5 월이므로 지난 3 개월은 2 월, 3 월, 4 월입니다. 따라서 차트에서 매년 여러 달 동안 다른 색만 적용해야합니다.

여기에서 r을 통해 플롯 또는 하이 차트를 사용하려고합니다.

답변

0

필자가 보게되는 문제는 플로팅 패키지를 선택하는 것이 아니라 색상 벡터를 만드는 것입니다. 나는 아래의 두 가지 접근 방식을 거칩니다. 첫 번째는 더 많은 수작업이고 두 번째는 좀 더 자동화되어 있지만 지난 3 개월 동안 보고서를 강조 표시 한 후 한 달에 코드를 실행한다고 가정합니다. 그러나 둘 다 자신 만의 용도로 사용자 정의 할 수있는 방법을 설명해야합니다.

library(lubridate) 
set.seed(12345) 
data <- data.frame(date=c(rep(c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"),2),c("Jan","Feb","Mar","Apr")), 
        plotdata=(abs(rep(rnorm(28)*100)))) 
###this is manual and requires customization based on your data set ###  
mycol <- rep(4,nrow(data)) ## setting color vector to blue by default (value = 4) 
mycol[c(length(mycol),length(mycol)-1,length(mycol)-2, 
     length(mycol)-12,length(mycol)-13,length(mycol)-14, 
     length(mycol)-24,length(mycol)-25,length(mycol)-26)] <- 2 
barplot(data$plotdata,col=mycol) 

###Second Way: Define past 3 months from current month. Lubridate allows 
### for easy date calculations as shown below. 

past3months <- c(as.Date(Sys.Date()-months(1),"month"),as.Date(Sys.Date()-months(2),"month"),as.Date(Sys.Date()-months(3),"month")) 
past3months <- format(past3months,"%b") ### changing the date format to match the data #### 
data$mycol2 <- ifelse(data$date %in% past3months,2,4) 

barplot(data$plotdata,col=data$mycol2) 

다음과 같은 그래프를 생성하는 코드의 두 개의 enter image description here

(베이스 그래픽 제조)