Проблема в следующем:
Есть таблица (data frame). Столбцы А и В несут информацию о содержаниях химических элементов. Класс столбцов - numeric. Столбцы Q, W, и R несут информацию соответственно о типе горной породы, кратком обозначении и цвете каждой разновидности (которым она будет обозначаться на графике). Класс столбцов - factor. Цвет указан в шестнадцатиричной кодировке (#0000ff и т.д.). При этом столбцы W и R были получены из столбца Q с последующей модернизацией.
Строим график (корреляционное поле):
plot(A, B, pch=20, cex=0.7, col=as.character(R))
получаем график, на котором разновидности пород обозначены разным цветом.
А вот добавить легенду не получается. Из множества вариантов удалось подобрать только один, который закрашивает условные обозначения в соответствии с указанным цветом. Но при этом цвета перепутываются:
legend("bottomleft", title="Poroda", as.character(levels(W)), fill=as.character(levels(R)))
Создание легенды к графику plot на основе факторных данных
-
- Активный участник
- Сообщения: 117
- Зарегистрирован: 31 окт 2011, 00:18
- Репутация: 14
- Откуда: Кривий Ріг
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: Создание легенды к графику plot на основе факторных данн
я чего вы ожидали, если названия берутся из одного места, а цвета из другого (а перед этим уровни сортируются порознь лексикографически)?ymr3R9Jge писал(а):Но при этом цвета перепутываются:
legend("bottomleft", title="Poroda", as.character(levels(W)), fill=as.character(levels(R)))
соберите руками легенду в массив с двумя столбцами, и используйте их вместо levels(), или, задайте уровни явно, в нужном порядке, когда создаете факторы (что есть то же самое). Или, напишите функцию, которая создает уровни столбца R из уровней столбца W, и вставьте в fill() легенды (что есть опять то же самое).
-
- Активный участник
- Сообщения: 117
- Зарегистрирован: 31 окт 2011, 00:18
- Репутация: 14
- Откуда: Кривий Ріг
Re: Создание легенды к графику plot на основе факторных данн
А можно немного подробнее - как напрямую, без лексикографической сортировки, передать в массив факторные столбцы из таблицы данных?gamm писал(а): соберите руками легенду в массив с двумя столбцами, и используйте их вместо levels()...
-
- Гуру
- Сообщения: 4056
- Зарегистрирован: 15 окт 2010, 08:33
- Репутация: 1054
- Ваше звание: программист
- Откуда: Казань
Re: Создание легенды к графику plot на основе факторных данн
не, не столбцы передать, а явно указать уровни при создании факторов, причем указать в "правильном" порядке.ymr3R9Jge писал(а):А можно немного подробнее - как напрямую, без лексикографической сортировки, передать в массив факторные столбцы из таблицы данных?
R<-factor(temp.R, levels=c("1","5","3"))
W<-factor(temp.W, levels=c("Алевролит","Песчаник","Мергель"))
тогда 1 будет соответствовать Алевролиту, 5-Песчанику, и т.д., они пойдут в нужном порядке. Иначе - лексикографически, см. help для factor()
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 32 гостя