Scatterplot с разноцветными точками - PullRequest
0 голосов
/ 21 июня 2019

Попытка составить простую диаграмму рассеяния с двенадцатью точками.Точки сгруппированы в три группы по четыре, связанные с четырьмя участками по трем типам землепользования.Я хотел бы раскрасить точку, связанную с их типами землепользования (жилой, промышленный и зеленый пояс).На диаграмме рассеяния показана взаимосвязь между Шеннонсом Н и индексом Симпсона (оценки богатства биоразнообразия с использованием вегана).Я могу сделать сюжет, но не могу раскрасить точки.

Пожалуйста, смотрите код ниже.Я пробовал варианты этого.Я также попробовал функцию scatterplot в library(cars).Это сработало, но я не мог настроить фигуру / размер / цвет точек, имел доступ только к значениям по умолчанию.

richness.fig <- plot(H, simp, xlab = "Shannon's H", ylab = "Simpson's", frame = FALSE)
points(richness.fig, "sites", pch = 19, col = "green", select = richcompare$use == "green")
points(richness.fig, "sites", pch = 19, col = "blue", select = richcompare$use == "indust")
points(richness.fig, "sites", pch = 19, col = "red", select = richcompare$use == "res")

Я получил график рассеяния, но в черно-белом варианте.Сообщения об ошибках выглядят следующим образом.

Error in xy.coords(x, y) : 'x' and 'y' lengths differ

1 Ответ

1 голос
/ 21 июня 2019

Вы можете сделать все это одним вызовом plot ().Просто передайте переменную аргументу "col", который описывает группы, которые вы раскрашиваете.

    richness.fig <- plot(H, simp, xlab = "Shannon's H", ylab = "Simpson's", frame = FALSE, col=richcompare$use)

Если вы хотите использовать функцию points (), то первые два аргумента обычно задают точки X и Yбыть построеннымВот почему вы получаете ошибку о разнице длины x и y.Таким образом, альтернативный подход заключается в том, чтобы по-прежнему делать это таким образом, но передайте H и просто в качестве первых двух аргументов.

ОБНОВЛЕНИЕ: пользовательские цвета можно сделать следующим образом.

    myCols <- c("green", "red", "blue")
    richness.fig <- plot(H, simp, xlab = "Shannon's H", ylab = "Simpson's", frame = FALSE, col=myCols[richcompare$use])

Добавьте столько цветов в myCols, сколько у вас есть уровней факторов в richcompare $ use

...