问题
I have managed to use the grey scale command to make a 3D scatter plot with the third dimension representing a color gradient. I have hit a wall when trying to produce the legend that coincides with it though. I already have the range of colors I want I just dont know how to tell R to make them into a legend. Here is my code.
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 is my z axis values and should be able to be used to produce my legend. I have tried working with various packages i.e. SDMTools and fields but I shouldnt need to go that rout.
回答1:
Try this,
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()
回答2:
using the raster.grid command I found you could also solve this question, however i could not figure out how to label the axis. Thank you so much Baptiste I have been avoiding the ggplots 2 package but i think it is time i dove in. Here is my code using raster.grid if it helps anyone:
library(grid) grid.raster(1:101/101,width=.075,height=.1)
来源:https://stackoverflow.com/questions/13472135/how-do-i-make-a-color-spectrum-legend-which-represents-my-z-values