【问题标题】:Plotting different shapes for data points belonging to different groups in R为属于 R 中不同组的数据点绘制不同的形状
【发布时间】:2013-11-23 13:43:51
【问题描述】:

我正在尝试绘制矩阵 Y 的前两列,并根据它们在我的数据集的第 12 列中属于哪个组来分配不同的数据点不同的形状和颜色。以下是我的代码:

 X <- as.matrix(course[,1:11])
 S <- cov(X)
 l <- eigen(S)$values
 e <- eigen(S)$vector
 Y <- X %*% e

plot(Y[,1:2],
     xlab = "PC1",
     ylab = "PC2",
     pch = c(1, 17, 8)[as.numeric(course[,12])],  # different 'pch' types 
     main = "Plot of first 2 Principle Components",
     col = c(1, 8, 1)[as.numeric(course[,12])]
     )

“course”是我正在使用的数据集,Y 是我有兴趣用于我的绘图的矩阵。然而,我基于我的标签的组之一基本上是缺失值或“NA”。我不能使用 as.numeric() 因为这不会将“NA”值视为数字。

当我从图中运行代码时,我得到了两组值,它完全忽略了 NA 的值。

非常感谢您的帮助。

【问题讨论】:

    标签: r plot missing-data pch


    【解决方案1】:

    您应该能够在调用plot() 之前创建一个包含pch 值的向量。例如,您可以使用 ?ifelse 执行此操作。最有可能的是,将带有NAs 的类别作为最后的else 会很方便,这样您就不需要复杂的匹配参数。将其存储在一个变量中(您可以将其称为myPch),然后在您的函数调用中使用该变量。也就是说,

    # assuming there are 3 courses: "A", "B", & "C", but some C's are NA's
    myPch <- ifelse(course[,12]=="A", 1, ifelse(course[,12]=="B", 17, 8) )
    plot(..., pch=myPch, ...)  
    

    【讨论】:

    • 但是 pch 是一个绘图参数,我该如何指定一个向量,将特定的 pch 分配给不同的值。另外,我以这种方式尝试了 if else 参数: course[,12]
    • 你还没有真正提供reproducible example,所以我能向你展示的内容有限,但我会尝试弥补一些东西,看看是否足够整个想法。
    • 课程 course[,12] [1] 3 3 MSc_4 MSc_4 3 MSc_4 MSc_4 3 3 3 3 3 3 3 [16] 3 3 3 MSc_4 MSc_4 MSc_4 3 3 3 3 3 MSc_4 3 MSc_4 [31] 3 3 3 3 3 MSc_4 3 3 3 MSc_4 MSc_4 MSc_4 3 [46] MSc_4 3 3 3 MSc_4 MSc_4 3 3 MSc_4 MSc_4 MSc_4 [61] MSc_4 MSc_4 3 级别:MSc_4 3
    • 这就是我所得到的。我还注意到我包含的 ifelse 命令返回了我所有值的数值,尽管我只为 NA 值指定了它
    • 您希望ifelse 命令仅输出数值。具体来说,您希望它输出您要使用的符号的数字。你应该像我写的那样使用它,只需将实际值替换为“A”、“B”和“C”。注意,我不太了解您上面的输出,您是否为同一门课程编码了 2 个不同的值?
    猜你喜欢
    • 2023-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-03
    • 1970-01-01
    相关资源
    最近更新 更多