【问题标题】:Densityplots using colwise - different colors for each line?使用 colwise 的密度图 - 每条线的颜色不同?
【发布时间】:2013-05-02 13:28:24
【问题描述】:

我需要一张不同密度线的图,每条线都是另一种颜色。这是一个示例代码(但要小得多),使用内置的 data.fame USArrests。我希望它可以使用吗?

colors <- heat.colors(3)  
plot(density(USArrests[,2], bw=1, kernel="epanechnikov", na.rm=TRUE),col=colors[1])     
lines1E <- function(x)lines(density(x,bw=1,kernel="epanechnikov",na.rm=TRUE))    
lines1EUSA <- colwise(lines1E)(USArrests[,3:4])`  

目前,代码仅使用一种颜色生成 colwise()。我怎样才能让每一行都有另一种颜色?或者有没有更好的方法来绘制几条不同颜色的密度线?

【问题讨论】:

    标签: r plyr kernel-density


    【解决方案1】:

    我没有完全按照您的示例进行操作,因此我创建了自己的示例数据集。首先,创建一个包含三列的矩阵:

    m = matrix(rnorm(60), ncol=3)
    

    然后绘制第一列的密度:

    plot(density(m[,1]), col=2)
    

    使用您的 lines1E 函数作为模板:

    lines1E = function(x) {lines(density(x))}
    

    我们可以在图中添加多条曲线:

    colwise(lines1E)(as.data.frame(m[ ,2:3]))
    

    就个人而言,我会使用:

    ##Added in NA for illustration
    m = matrix(rnorm(60), ncol=3)
    m[1,] = NA
    plot(density(m[,1], na.rm=T))
    sapply(2:ncol(m), function(i) lines(density(m[,i], na.rm=T), col=i))
    

    得到:

    【讨论】:

    • 感谢您的努力。在您的第一个示例中,我仍然只有 2 种颜色,而不是 3 种。我原来的 data.frame 更大。 sapply 不适用于我的 data.frame,我认为是因为 NA,这就是我使用 colwise() 的原因。但我会再试一次
    • 'NA's 不影响sapply。但是,您需要在密度函数中添加na.rm=TRUE。关于颜色,这有点棘手,因为它需要您的 lines1E 函数才能知道正在使用哪一列。这是可能的,但我认为这不是一个好主意。
    • 这行得通 - 非常感谢!我想我一开始没有正确使用 sapply 函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多