R: Раскрашивание прямоугольников в зависимости от значений фрейма данных

Сначала объяснение того, что я ищу, затем некоторый воспроизводимый простой код.

В моем примере у меня есть простой график без каких-либо линий, но только с 10 прямоугольниками. Моя цель — раскрасить 10 прямоугольников в зеленый, красный или желтый цвет. цвет прямоугольников определяется значениями последних 10 наблюдений столбца x предустановленного набора данных randu.

  1. Если значение >0,7, прямоугольник должен быть красным.
  2. Если значение >= 0,7 и ‹= 0,5, прямоугольник должен быть зеленым.
  3. Если значение равно ‹0,5, прямоугольник должен быть желтым.

У меня есть определенный вектор, называемый farben, который состоит из 3 шестнадцатеричных кодов (желтый красный песок зеленый)

data(randu)
farben<-c("#FFFF00", "#00FF00", "#FF0000")
plot(c(0, 20), c(0, 40), type= "n", xlab = "", ylab = "")
for (i in 0:10) {
rect(i, 0, (i+1), 5, border = "black", col=farben)}

person alx.chrs    schedule 06.05.2015    source источник


Ответы (1)


Это должно сработать. Код не использует вектор farben, а напрямую назначает цвета на основе перечисленных вами критериев:

plot(c(0, 20), c(0, 40), type= "n", xlab = "", ylab = "")
for (i in 0:10) {
  randu_value <- tail(randu[, "x"], 11)[i+1]

  if(randu_value > 0.7) color <- "#FF0000" 
  if(randu_value <= 0.7 & randu_value >= 0.5) color <-  "#00FF00"
  if(randu_value < 0.5) color <- "#FFFF00"

  rect(i, 0, (i+1), 5, border = "black", col=color)
}
person Felix    schedule 06.05.2015