我有一个数据框,其中有两个变量沿x轴和y轴绘制,作为一个简单的散点图,我想添加第三个变量,但我想代表获得z轴,而不是将所述z变量的密度指定为散点图的背景。我觉得这样,取自文学:
数据无关紧要,因为我会使用这种情节的一般方法,但你可以使用这样的东西:
df<-data.frame(IDOBS=c(1:1000),var1=runif(1000,0,30),var2=runif(1000,1500,3000),var3=runif(1000,0.5,1.5))
因此var1和var2分别作为x和y变量,背景取决于var3。
提前感谢您的帮助,
下进行。
答案 0 :(得分:0)
df<-data.frame(x=runif(1000,670,3300),y=runif(1000,2,30),z=runif(1000,0.5,1.5))
gni.loess = loess(z ~ x*y, data = df, degree = 2, span = 0.25)
gni.fit = expand.grid(list(x = seq(670, 3300, 0.1), y = seq(2, 30, 0.1)))
z = predict(gni.loess, newdata = gni.fit)
gni.fit$prod=as.numeric(z)
levelplot(prod ~ x*y, data = gni.fit,
xlab = "x", ylab = "y",
main = "z on an x*y grid",
col.regions = terrain.colors(100)
)
这给出了类似的东西(随机,因为示例中[x,y]和z之间没有关系):
我仍然试图在它上面添加y~x的散点图。
编辑:使用ggplot2的解决方案更易于用于多层绘图,但为水平图提供了较少定义的边界(即绘图上z值的更连续的色谱)。例如,可以通过geom_point()添加原始(x,y)散点图(与使用expand.grid获得的变换值相对)。 另一种可能性,不那么吸引人的图形但更简单,是使用geom_point()表达式,如:
p<-ggplot(df,aes(x,y))
p + geom_point(data=df, aes(x,y, color=z))+ scale_colour_gradient(low = "green", high="red")
,并提供: