首页 文章

第三变量绘图为背景密度

提问于
浏览
0

我有一个数据框,沿x轴和y轴绘制两个变量,作为一个简单的散点图,我想添加第三个变量,但我想代表点的密度,而不是获得z轴 . 表示z变量作为散点图的背景 . 从文学中我看起来像这样:

enter image description here

数据无关紧要,因为我会使用这种情节的一般方法,但你可以使用这样的东西:

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 .

预先感谢您的帮助,

C .

1 回答

  • 0

    显然我've been missing the name of such a plot, which is a contour plot or level plot. A simple function in lattice allows you to do it. I'使用了以下代码,发现于this R blog

    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")
    

    赠送:

    enter image description here

相关问题