2016-06-13 4 views
0

として、私はカレンダーのヒートマップ(discussionとソースGitHub)のagstudyの変更を使用していないカレンダーヒートマップ:色は指定

一般的には、コードは非常にうまく動作しますが、私はトラブル私のカラーコードが動作するようになってを抱えています。 Example

ここに示した例では、最初の3週間は赤色に、4番目の青色に着色してください。全体としてこのシーケンスは6回繰り返さなければならない。すなわち、青色(4回ごと)に6週間着色されるべきである。

私はファイルから16進コードで色のリストをロードし、「ユーザー」という名前を付け、私のカラーコードを達成するために:

col.sty <- switch(color, 
'user'=data_2$colorMicro, 
'r2b'=c("#0571B0", "#92C5DE", "#F7F7F7", "#F4A582", "#CA0020"), #red to blue                    
'r2g'=c("#D61818", "#FFAE63", "#FFFFBD", "#B5E384") , #red to green 
'w2b'=c("#045A8D", "#2B8CBE", "#74A9CF", "#BDC9E1", "#F1EEF6"), #white to blue 
'b2w'=grey.colors(5))## black to white 
# assign("col.sty", get(color)) 
calendar.pal <- colorRampPalette((col.sty), space = "rgb") 

DATA_2の内容は次のとおりです。

colorMicro 
#CC0000 
#CC0000 
#CC0000 
#00CCFF 
#CC0000 
#CC0000 
#CC0000 
#00CCFF 
#CC0000 
#CC0000 
#CC0000 
#00CCFF 
#CC0000 
#CC0000 
#CC0000 
#00CCFF 
#CC0000 
#CC0000 
#CC0000 
#00CCFF 
#CC0000 
#CC0000 
#CC0000 
#00CCFF 

これらはヒートマップで表現したい24週間の24色の値です。変数ncolorsは24に設定され、cutsはncolors-1に設定されます。

私はagstudyのコードと比べてレベルプロットの設定を少し変更しました。

# major plot ------------------------------------------------------------------ 
p <- levelplot(value~woty*dotw | yr, data=dat, border = "black", 
      layout = c(1, nyr%%7), 
      col.regions = calendar.pal(ncolors), 
      aspect='iso', 
      between = list(x=0, y=c(1,1)), 
      strip=TRUE, 
      main =varname, 
      panel = function(x,y,z,...) { 
       panel.levelplot(x,y,z,...) 
       ll <- list(...) 
       at = pretty(dat$pvalue) 
       ind.pch <- cut(dat$pvalue, at, include.lowest = TRUE, labels = FALSE) 
       pch.symbols <- pch.symbol[ind.pch] 
       subscripts <- ll$subscripts 
       x <- x[subscripts] 
       y <- y[subscripts] 
       pch.symbols <- pch.symbols[subscripts] 
       a=ifelse(dat$pvalue==0,15,ifelse(dat$pvalue==1,16,ifelse(dat$pvalue==2,17,ifelse(dat$pvalue==3,18,ifelse(dat$pvalue==4,25,ifelse(dat$pvalue==5,10,ifelse(dat$pvalue==6,65,ifelse(dat$pvalue==7,66,ifelse(dat$pvalue==67,S,NA))))))))) 
       b=ifelse(dat$pvalue==0,"blue1",ifelse(dat$pvalue==1,"darkorange4",ifelse(dat$pvalue==2,"red",ifelse(dat$pvalue==3,"seashell4",ifelse(dat$pvalue==4,"magenta",ifelse(dat$pvalue==5,"limegreen",ifelse(dat$pvalue>5,'yellow','black'))))))) 
       panel.xyplot(x, y,fill =col.symbol ,col.symbol =b, 
          pch = a, cex=cex.symbol, 
          , ...) 
       calendar.division(...) 
      }, 
      scales= scales, 
      cuts = ncolors-1, 
      colorkey= list(at=seq(from=1, to=24, by=1), col = calendar.pal(ncolors), width = 0.6, height = 0.5), 
      xlim =extendrange(dat$woty,f=0.01), 
      xlab="",ylab="", 
      ylim=extendrange(dat$dotw,f=0.1), 
      subscripts=TRUE, 
      par.settings = calendar.theme) 
    p 
} 

なぜ色がシフトし、目的のカラーコードと一致しないのかわかりません。誰かが理由が何であるか考えているのですか?

私のでは最初、私は1から24、すなわちに昇順で個体番号の各曜日を割り当てられを試してみてください:最後に、私はそれがどのように動作するかを発見しました

+0

私はこのパッケージを使用していませんが、私はhttps://github.com/Ather-Energy/ggTimeSeriesの著者であり、使用できる別のカレンダーヒートマップがあります。 – TheComeOnMan

+0

アドバイスをいただきありがとうございます!私はそれを見てみましょう。 – ABC123

+0

ヒートマップにシンボルも必要なので、別のヒートマップを使用するのではなく、現在の問題の解決策を希望します。 – ABC123

答えて

0

第1週の曜日の値は1に設定され、第2週の曜日は2に設定されました。リストcolorMicroには、個々の週に対応する24色が含まれていました。リストには複数の色が含まれていました。

私のセカンドトライ私はすべての日に同じ色の同じ番号を割り当てました。同時に私はリストに対応する色を入れますcolorMicro。この方法では、各色は一覧に1回だけ表示され、カレンダーに表示される数字と同じ順序で表示されます。変数ncolorsが大きく設定されました。 Example

最初の方法は、Rの外部でのデータ生成を考慮して簡単でしたが、何らかの理由で動作しません。 この事実を知って、第2の方法も簡単で、プロットの適切な振る舞いにつながります。今では、私が必要とする自由意志で毎日または週にあらかじめ定義された色を割り当てることが可能です。たぶん、これは他の人にとっても役に立ちます。

関連する問題