2017-05-09 7 views
1

どのようにRの棒グラフの特定の棒に色分けするのですか?バーの特定のセットは動的に変化する。バーチャルの棒のセットのRの色は

enter image description here

の背後にあるロジックですが、私は、データの最後の3ヶ月を見つけると、それらのバーの異なる色を適用する必要があることに加えて、私がでたものヶ月に同じ色を適用する必要が前の年。

今、それは2017年5月ですので、最後の3ヶ月はFeb、Mar、Aprです。だから私は、チャートでは、毎月それらの月に異なる色を適用する必要があります。

ここでrからプロットまたはハイチャートを使用しようとしています。

答えて

0

私が見ているように、問題は、プロットパッケージの選択ではなく、カラーベクトルの作成です。私は以下の2つの異なるアプローチを行っています。最初は手作業で、2番目はもっと自動化されていますが、レポートの過去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(ベースグラフィックスで作られました)
関連する問題