2016-06-13 4 views
0

Я использую модификацию agstudy в календарном (discussion Тепловой карте и источника GitHub)Календарь Heatmap: Цвета не как указан

В общем, коде работает очень хорошо, но у меня возникают проблемы при получении моего цвета кода для работы. Example

В показанном примере первые 3 недели должны быть окрашены в красный цвет и 4-й синий. В целом эта последовательность должна повторяться 6 раз, т. Е. Должно быть 6 недель, окрашенных в синий цвет (каждый 4-й).

Для того, чтобы достичь своей цветовой код, который я загрузить список цветов в шестнадцатеричном коде из файла и назовите его «пользователя»:

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") 

Содержание данные_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 
} 

Я не могу понять, почему цвета смещены и не соответствуют намеченному цветовому коду. Кто-нибудь есть идея, что может быть причиной?

+0

Я не использовал эту упаковку, но я являюсь автором https://github.com/Ather-Energy/ggTimeSeries, у которой есть другая карта тепла календаря, которую вы могли бы использовать. – TheComeOnMan

+0

Спасибо за совет! Я посмотрю на это. – ABC123

+0

Поскольку мне также нужны символы в тепловой карте, я бы предпочел решение для текущей проблемы, вместо использования другой тепловой карты. – ABC123

ответ

0

Наконец, я узнал, как это работает:

В моей первый попробовать я назначил дни каждой недели индивидуальный номер в порядке возрастания от 1 до 24. Т.е. значения дней недели были установлены в 1, дни недели 2 - 2 и так далее. Список colorMicro содержит 24 цвета, которые должны были соответствовать отдельным неделям. Список содержит цвета несколько раз.

В моей второй попытке Я назначил все дни с тем же цветом того же номера. В то же время я помещаю соответствующие цвета в список colorMicro. Таким образом, каждый цвет отображается только один раз в списке и в том же порядке, что и числа в календаре. Переменная ncolors Я установил большое количество, и теперь все работает по своему желанию.

Первый способ был проще для меня с учетом генерации данных вне R, но по какой-то причине он не работает. Зная этот факт, второй способ также прост и ведет к правильному построению графика. Теперь можно назначать предопределенные цвета на каждый день или неделю по бесплатной воле, что мне и нужно. Возможно, это тоже полезно для других.

 Смежные вопросы

  • Нет связанных вопросов^_^