【问题标题】:Change point labels on plot created by plotTangentSpace in "geomorph" package在“geomorph”包中由 plotTangentSpace 创建的绘图上更改点标签
【发布时间】:2013-11-14 10:48:44
【问题描述】:

这是在plotTangentSpacegeomorph 的帮助页面上找到的经典示例。我只添加了两行:向量Myname 的构造以及根据Myname 命名数组的一维Y.gpa$coords 的以下行。

library (geomorph)
data(plethodon)
Y.gpa<-gpagen(plethodon$land)    #GPA-alignment
ref<-mshape(Y.gpa$coords)
Myname = 41:80
dimnames(Y.gpa$coords)=list(NULL, NULL, Myname)
plotTangentSpace(Y.gpa$coords, label=T)

如您所见,在plotTangentSpace 创建的图上,点被标记为 1:40 而不是 41:80,正如我打算通过重命名 Y.gpa$coords 所做的那样。我想根据Myname 标记这些点。对于这个例子,我的名字只是一个数字向量,但我希望它也适用于字符类型。我怎样才能做到这一点?

【问题讨论】:

    标签: arrays r graph plot pca


    【解决方案1】:

    如果您查看plotTangentSpace 的代码(只需在 R 控制台中输入),您首先会找到“参数列表”:

    function (A, axis1 = 1, axis2 = 2, warpgrids = TRUE, label = FALSE) 
    

    如您所见,您可以“打开”或“关闭”标签(label = TRUEFALSE),但没有设置标签实际值的参数。再往下,您可以在两个地方找到默认的硬编码标签 (seq(1, n)) 的代码:

        if (label == T) {
            text(pcdata[, axis1], pcdata[, axis2], seq(1, n), 
                adj = c(-0.7, -0.7))
    

    ...pcdataaxis1n 在函数开头定义。

    因此,如果要设置标签的值,似乎需要稍微重写函数。一种可能性是将labels 参数添加到arglist:
    function (A, axis1 = 1, axis2 = 2, warpgrids = TRUE, label = FALSE, labels = NULL)

    ...并更改两个 text 调用中的参数:

      text(pcdata[, axis1], pcdata[, axis2], labels, 
           adj = c(-0.7, -0.7))
    

    您还需要访问geomorph 命名空间中的tps 函数。这可以通过在tps 的两个实例之前添加geomorph::: 来实现:

      geomorph:::tps(ref, shape.min, 20)
      geomorph:::tps(ref, shape.max, 20)
    

    然后将更新后的函数赋给一个新的函数名:

    plotTangentSpace2 <- function (A, axis1 = 1, axis2 = 2, warpgrids = TRUE, label = FALSE, labels = NULL){
    lots-of-stuff
    text(pcdata[, axis1], pcdata[, axis2], labels, adj = c(-0.7, -0.7)) # in both places
    more-stuff
    geomorph:::tps(ref, shape.min, 20)
    geomorph:::tps(ref, shape.max, 20)
    }

    使用更新后的函数绘图,使用“Myname”作为标签:
    plotTangentSpace2(Y.gpa$coords, label = TRUE, labels = Myname)

    【讨论】:

      猜你喜欢
      • 2019-01-01
      • 1970-01-01
      • 2019-11-18
      • 2022-12-11
      • 1970-01-01
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多