Как назначить определенные цвета конкретным категориальным переменным в R?

Я полный новичок в R и у меня есть этот вопрос. Я использую следующий код для создания списка цветов, а затем создаю массивную матрицу диаграммы рассеяния. Я хочу назначить определенные цвета первому столбцу моей матрицы (категория с 4 категориями). Запуск этого кода работает нормально, но как проверить правильность цветов, которые я намерен указать для каждой из категориальных переменных?

В основном я хочу добиться зеленого для «контроля», оранжевого для «низкого», коричневого для «среднего» и черного для «высокого».

col.list<-c("green","orange","brown","black")

palette(col.list)

pairs(Indices[,4:17], col=Indices[,1])

Спасибо за любую помощь!


person VGu    schedule 09.11.2013    source источник
comment
Ваш первый столбец в Indices должен содержать названия цветов. Есть несколько способов создать это. Начните с ?rainbow.   -  person Roman Luštrik    schedule 09.11.2013


Ответы (1)


То, как вы это делаете, правильно. Если вы хотите проверить, действительно ли цвета соответствуют вашей группе, вы можете, например, сделать это так (здесь с воспроизводимым примером):

set.seed(1)
a <- data.frame(Group=factor(sample(c("control","low","medium","high"),20,TRUE),
                             levels= c("control","low","medium","high")),
                x=rnorm(20),y=rnorm(20))
col.list <- c("green","orange","brown","black")
palette(col.list)
pairs(a[,2:3], col=a[,1])

То, что делает col=a[,1], на самом деле является palette()[a[,1]] (который работает, ЕСЛИ содержимое столбца является множителем или целым числом), поэтому давайте посмотрим:

palette()[a[,1]]
[1] "orange" "orange" "brown"  "black"  "green"  "black"  "black"  "brown"  "brown"  "green"  "green"  "green"  "brown"  "orange"
[15] "black"  "orange" "brown"  "black"  "orange" "black" 

table(a[,1], palette()[a[,1]])
         black brown green orange
  control     0     0     4      0
  low         0     0     0      5
  medium      0     5     0      0
  high        6     0     0      0

Единственное, о чем вам действительно нужно беспокоиться, это то, что содержимое Indices[,1] является фактором, уровни которого упорядочены в том же порядке, что и соответствующий список цветов.

person plannapus    schedule 09.11.2013
comment
Привет Plannapus, спасибо за ваш ответ. Я понимаю логику, но не могу воспроизвести ее со своими данными. По какой-то странной причине максимум окрашивается в оранжевый цвет. Я упускаю что-то очевидное? - person VGu; 10.11.2013
comment
Вы проверили, что порядок ваших уровней совпадает? (например, когда вы вводите Indices[1,1], вы должны увидеть свой первый элемент, а также список уровней в определенном порядке. Если порядок не соответствует порядку ваших цветов, либо измените порядок ваших цветов :), либо измените порядок ваших уровней например, используя функцию relevel. - person plannapus; 11.11.2013
comment
Спасибо, Планнапус. Я понял, что заказы не синхронизированы друг с другом! Ваше здоровье. - person VGu; 21.11.2013