Как масштабировать цвета точек на диаграмме рассеяния относительно данных с помощью findColours? - PullRequest
0 голосов
/ 05 июля 2019

Я пытаюсь использовать график рассеяния для визуализации трех переменных: времени, радиуса и интенсивности. Я хотел бы, чтобы каждая точка на диаграмме рассеяния была окрашена в соответствии с градиентом, в котором красный цвет указывает на интенсивность меньше 1, белый цвет указывает на интенсивность 1, а зеленый цвет указывает на интенсивность более 1.

#A1 scatter plot

colors <- c("firebrick2", "white", "darkolivegreen3")
class <- classIntervals(A1.matrix[,3], 10) #A1.matrix[,3] is "Intensity"
colorcode <- findColours(class, colors)
plot(A1.matrix[,1], A1.matrix[,2]) #A1.matrix[,1] is "Time" and A1.matrix[,2] is "Radius"
points(A1.matrix[,1], A1.matrix[,2], pch = 19, col = colorcode)

Это очень близко к тому, что я ищу. Firebrick2 и darkolivegreen3 соответствуют минимальным и максимальным значениям в A1.matrix [, 3] соответственно. Но белый не соответствует 1. Как я могу установить белый, равный 1?

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

Я добился успеха, выполняя нечто подобное с тепловой картой уровня, используя at = unique, как показано ниже. Тем не менее, я просто скопировал это откуда-то онлайн, и это не работает в функции точек, я не уверен, как это работает или можно ли как-то применить. Шкала цветовой шкалы автоматически становится частью графика с графиком уровня.

#A1 heat map

levelplot(nbin.A1, cuts = 50, at= unique(c(seq(A1min,1, length = 100), seq(1,A1max, length=100))), col.regions = colorRampPalette(c("firebrick2", "white", "darkolivegreen3"))(1e3), xlab = "Radius (Microns)", ylab = "Time")

Спасибо за чтение!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...