2016-03-31 6 views
0

Итак, я сделал сюжет в R, с множеством разных цветов, указывающих, к какому из 23 категорий принадлежит точка. Цвета точек добавляются через вектор (stratumcol, который является фактором с 23 уровнями).R легенда участка, не показывающая цвета в соответствии с точками

Когда я добавляю легенду, пытаясь позволить этому показать цвета и их категорию, кажется, что они не соответствуют (проверены с использованием орхилла, см. Рисунок ниже).

Это мой участок кода:

plot(pca_nmdsscores, type = "n") 
points(pca_nmdsscores, col=stratumcol, cex=1.5, pch = 15) 
legend("right","top",levels(stratumcol),cex=.8, col = as.numeric(stratumcol), pch =15, lty = 0) # pch = stratumcol 
ordihull(pca_nmdsscores, groups = stratumcol,draw = "polygon", col ="purple",label = T, show.groups = "LateMoistRich") 
ordihull(pca_nmdsscores, groups = stratumcol,draw = "polygon", col ="blue",label = T, show.groups = "MidWetPoor") 

Вот мой Rplot должен быть виден. Как вы можете видеть, моя категория «MaleMoistRich» соединяет точки с розовым цветом, но в легенде этот цвет называется «MidMoistRich».

То же самое для «MidWetPoor», соединяющего середину синих точек, в легенде этот цвет относится к «LateMoistPoor».

Как решить эту проблему?

Я пробовал искать решения, но не сталкивался с тем, что мог его решить, включая «уникальный» (что ничего не меняет, поскольку моя палитра была определена с 23 цветами, поэтому нет необходимости перерабатывать эти в любом случае)

[Plot из R, показывая легенды и точки цвета] [1]

Ok - так, так как я новичок, я не могу загрузить изображение моего участка ...

Но посмотрите здесь: http://i.stack.imgur.com/pzn2y.png

/thank s

Редактировать: Решение должно было не использовать уровни() на моем множителе! Не в легенде = уровни (stratumcol), ни в col = levels (stratumcol). Ричард и DeveauP предложил уровни могут быть проблемой.

Это создало новую проблему: у моего лега отобразился весь фактор, а не только уровни в нем (но цвета соответствовали правильным цветам точек, что было оригинальной проблемой).

Эта новая проблема была решена с помощью «unique()» вместо «levels()».

legend("Right","top",legend=unique(stratumcol), cex=.8, col = unique(stratumcol), pch=15, lty=0) 

Я нашел решение

+0

Я вижу, что вы положили "COL = as.numeric (stratumcol)" в легенде, это может изменить порядок по сравнению с факторами (числовое значение 1 не обязательно является первым фактором). Что произойдет, если вы удалите as.numeric? – DeveauP

+0

Это ничего не меняет. Я добавил его, чтобы попытаться исправить его - и это не было :) – AAL

+1

Проблема может быть связана с использованием вами легенды. Если stratumcol является фактором, as.numeric() возвращает коэффициенты, а не цвета. Также as.numeric (stratumcol) даст вектор в любом порядке, а не в порядке, соответствующем уровням(). –

ответ

1

Try

legend("right","top",legend = levels(stratumcol),cex=.8, col = levels(stratumcol), pch =15, lty = 0) 
+0

То, что я делал, это удаление «levels()», которое решило проблему, но вызвало новую -> Повторение моего фактора все 130 раз, вместо того, чтобы легенда показывала только 23 уровня один раз. ##### Я попытался решить его, как вы предложили @Richard Telford, но добавление col = levels (stratumcol) возвращает ошибку: «invalid colorname« EarlyDryPoor », и никакой легенды не отображается вообще. – AAL

+0

Возможно, мне придется вручную определять легенду на основе порядка, который они появляются в фактологической колонке, хотя я бы предпочел не делать этого по всем моим факторам ... – AAL

+0

Хорошо, я неправильно понял, как ваши данные упорядочены. Как вы указали цвета? С палитрой? Если так col = 1:23 будет работать. –

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