Как сделать легенду цветового спектра, которая представляет мои значения z?

Мне удалось использовать команду шкалы серого, чтобы создать трехмерную точечную диаграмму с третьим измерением, представляющим цветовой градиент. Однако я наткнулся на стену, пытаясь создать легенду, которая совпадала бы с ней. У меня уже есть диапазон цветов, который я хочу, я просто не знаю, как сказать R, чтобы он превратил их в легенду. Вот мой код.

conocarp.stands<-c(264,330,400,594,600,700,726,730,800,825,825,826,1914,2145,2200,2310,2475,2640,3630,3960,3960,4124,4554,5082,8250,8475,9200,1000)

fimb.size<-c(540,2160,1100,1170,350,850,2340,600,200,738,1080,1300,2416,540,3565,810,648,0,900,0,635,1210,0,900,2340,1152,0,0)

sugar.visits.cono<-c(0.005682,0,0.065,0,0,0.010714,0,0.010274,0.011875,0,0,0,0,0,0.007045,0,0.001414,0.002273,0,0.014141,0.001263,0.006426,0.000769,0.000295,0.005515,0.000186,0.00359,0.004939)

colors <- rev(grey(1:101/101))
zcolor <- colors[round((sugar.visits.cono -min(sugar.visits.cono))/diff(range(sugar.visits.cono))*100 + 1)]
plot(conocarp.stands,fimb.size, pch=1, cex=1.8,ann=FALSE)
points(conocarp.stands,fimb.size,col=zcolor, pch=16, cex=1.5)

zcolor - это мои значения оси Z, и их можно использовать для создания моей легенды. Я пытался работать с различными пакетами, т.е. SDMTools и полями, но мне не нужно идти по этому пути.


person Chris Johnson    schedule 20.11.2012    source источник
comment
возможно, сработает и последовательная палитра с использованием hcl?   -  person Chris Johnson    schedule 21.11.2012


Ответы (2)


Попробуй это,

library(ggplot2)

d = data.frame(conocarp.stands = conocarp.stands,
               fimb.size = fimb.size,
               sugar.visits.cono = sugar.visits.cono)

ggplot(data = d, mapping = aes(x = conocarp.stands, y = fimb.size)) +
     geom_point(aes(colour = sugar.visits.cono), shape = 19)

last_plot() + scale_colour_gradient(high="grey10", low="grey90") + theme_bw()
person baptiste    schedule 21.11.2012

используя команду raster.grid, я обнаружил, что вы также можете решить этот вопрос, однако я не мог понять, как пометить ось. Большое спасибо, Батист. Я избегал пакета ggplots 2, но думаю, что пришло время погрузиться в него. Вот мой код, использующий raster.grid, если он кому-то поможет:

библиотека (сетка) grid.raster (1: 101/101, ширина = 0,075, высота = 0,1)

person Chris Johnson    schedule 21.11.2012