【问题标题】:Superimpose pairs plot based on condition根据条件叠加对图
【发布时间】:2011-02-20 12:34:39
【问题描述】:

**编辑:**对不起,但情况可能比我展示的要复杂一些。但是,您的两个脚本都可以工作,尽管由于点重叠,对于大型数据集,第一个脚本可能不太清楚!非常感谢萨沙!

我想先显示几个变量的对,然后叠加同一数据集的选定数据。通常,可以像这样使用par(new=T) 来实现叠加:

h<-rnorm(nc)  # this variable was used for conditioning
x<-rnorm(nc)
y<-rnorm(nc)
z<-rnorm(nc)
m<-cbind(x,y,z)
pairs(m)
par(new=T)
pairs(m[h>0.7,],col="red")

但是,par() 设置似乎不适用于这种用法。

那么,格子库可能会有所帮助,例如。 splom(),但我不知道它是否真的有效,以及如何。有人能给点建议吗?

【问题讨论】:

    标签: r lattice par


    【解决方案1】:

    我假设paris 必须是pairspairs 函数没有 add 左右的参数,它可能也不是那么简单,因为该图有 9 个面板(只需执行 points 将在最后一个面板中绘制)。但是使用col 在一个情节中做你想做的事情并不难:

    nc <- 100
    set.seed(1)
    x<-rnorm(nc)
    y<-rnorm(nc)
    z<-rnorm(nc)
    m<-cbind(x,y,z)
    
    cols <- ifelse(x>0.7,"red","black")
    pairs(m,col=cols)
    

    编辑:

    您可以在pairs 中做的另一件事实际上是在每个面板中设置您要执行的功能。默认情况下这是points,但您可以扩展它以包含一些条件:

    nc <- 100
    
    X<-rnorm(nc)
    Y<-rnorm(nc)
    Z<-rnorm(nc)
    m<-cbind(X,Y,Z)
    
    panelfun <- function(x,y,foo=X,...){
        points(x[foo<0.7],y[foo<0.7],col="black",...)
        points(x[foo>0.7],y[foo>0.7],col="red",...)
    }
    
    pairs(m,panel=panelfun)
    

    这给出了与以前相同的图片(因为我没有设置种子,所以点不同)。简单地制作颜色矢量会更容易实现这一点,但您可以将面板功能设置为任意大小。

    另外,... 允许将其他参数传递给 points 函数:

    pairs(m,panel=panelfun,pch=16)
    

    【讨论】:

      【解决方案2】:

      lattice::splom 工作正常。颜色索引需要提高 1,因为 R 索引是基于 1 而不是基于零,并且逻辑向量被强制为 0 和 1。

      library(lttice)
      nc=100; h<-rnorm(nc)  
      x<-rnorm(nc)
      y<-rnorm(nc)
      z<-rnorm(nc)
      m<-cbind(x,y,z)
      splom(m, col=c("blue", "red")[1+(h>0.7)])
      

      【讨论】:

        猜你喜欢
        • 2019-06-28
        • 2021-10-11
        • 2020-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-31
        • 2023-02-10
        • 1970-01-01
        相关资源
        最近更新 更多