Если это ваши данные:
x = c('A', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H')
y = c(1, 0, 2, 3, 4, 5, 0, 6, 0)
Затем выберите три цвета:
cols <- c("orange2","green4","tomato3")
И создайте цветовой вектор на основе ваших критериев. Вы можете использовать ifelse
для определения индекса, который будет использоваться для вектора cols
.
col <- cols[ifelse(x %in% c('A','C','E','G'), 1, # orange
ifelse(x %in% c('B','D','F'), 2, # green
ifelse(y==0, 3, # tomato
4)))] # no 4th colour, so NA (the points won't appear)
col
# "orange2" "orange2" "green4" "orange2" "green4" "orange2" "green4" "orange2" "tomato3"
Длина col
такая же, как у ваших данных, и, поскольку R векторизует, все работает.
plot(1:length(y), y, xaxt="n", las=1, xlab="x", col=col, pch=20, cex=3)
axis(side=1, at=1:length(y), labels=x)
![enter image description here](https://i.stack.imgur.com/sGCBG.png)