我刚到了一个十字架 这个不错的代码 这使得这个散射矩阵图:

alt text
(资源: free.fr)

并希望通过使点的尺寸/颜色(在下三角形中)根据这种类型的选项有所不同(例如抖动可能给我的效果,使点的大小/颜色(在下三角形中)将其实现到Likret量表变量(1至5的整数)。 )。

关于如何在基本绘图机制上执行此操作的任何想法?

更新:

我发挥了以下功能,但不知道如何使点的规模总是“好”,您怎么看?

panel.smooth2 <- function (x, y, col = par("col"), bg = NA, pch = par("pch"), 
                    cex = 1, col.smooth = "red", span = 2/3, iter = 3, ...) 
{
    require(reshape)
    z <- merge(data.frame(x,y), melt(table(x ,y)),sort =F)$value
    z <- z/ (4*max(z)) 

    symbols( x, y,  circles = z,#rep(0.1, length(x)), #sample(1:2, length(x), replace = T) ,
            inches=F, bg="blue", fg = bg, add = T)

    # points(x, y, pch = pch, col = col, bg = bg, cex = cex)
    ok <- is.finite(x) & is.finite(y)
    if (any(ok)) 
        lines(stats::lowess(x[ok], y[ok], f = span, iter = iter), 
            col = col.smooth, ...)
}



a1 <- sample(1:5, 100, replace = T)
a2 <- sample(1:5, 100, replace = T)
a3 <- sample(1:5, 100, replace = T)
aa <- data.frame(a1,a2,a3)


pairs(aa , lower.panel=panel.smooth2)
有帮助吗?

解决方案

您可以使用 '符号'(类似于方法“线”,“ Abline”等。)

此方法将为您提供对符号大小和颜色在一行代码中的细粒度控制。

使用“符号”,您可以设置符号大小,颜色和形状。形状和大小是通过将每个符号大小的向量传递到“圆”,“正方形”,“矩形”或“恒星”的矢量中设置的5,1)。颜色是用“ BG”和/或“ FG”设置的。

symbols( x, y, circles = circle_radii, inches=1/3, bg="blue", fg=NULL) 

如果我理解问题的第二部分,您希望合理地确定您用来扩展图中符号的功能以有意义的方式进行。 “符号”函数缩放(例如) 半径 基于“ z”变量(或data.frame列等)中值的圆圈的圆圈,我将最大符号大小(半径)设置为1/3英寸 - 除了最大的符号外,每个符号都具有一个半径较小的一定数分,根据该DAT点的值比最大值的比例缩放。比这是一个不错的选择吗?我不知道 - 在我看来,直径或特别圆周可能会更好。无论如何,这是一个微不足道的变化。总而言之,与“圆圈”一起传递的“符号”将按比例地缩放符号的半径与“ z”坐标 - 可能最适合连续变量。我将使用颜色('bg')用于离散变量/因素。

使用“符号”的一种方法是调用您的绘图函数并传递type ='n',该='n'创建图对象但抑制绘制符号,以便您可以接下来用“符号”函数绘制它们。

为此,我不建议“ CEX”。 “ cex”是文本大小和符号大小的缩放因素,但是它影响的这两个绘图元素中的哪个取决于您何时将其传递给它 - 如果您通过“ PAR”设置了它,则它对出现的大多数文本作用在情节上;如果将其设置在“图”函数中,则它会影响符号大小。

其他提示

当然,只需使用 cex:

set.seed(42)
DF <- data.frame(x=1:10, y=rnorm(10)*10, z=runif(10)*3) 
with(DF, plot(x, y, cex=z))

这为您提供不同的圆尺寸。颜色可以只是第四维。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top