在 R 中绘制不识别 pch 号

Plot in R not recognizing pch numbers

我正在尝试使用常规 plot() fcn 在 base R 中绘图。但是,当传递要使用哪个 pch 的向量时,它不会绘制 pch,它只会绘制数字“1”而不是我正在调用的 pch 的形状。

正在生成一些数据(我的真实数据有超过 400 行的负载和元 objects:

loads <- data.frame(PC1 = c(11.32, 13.18, 12.82, 24.70), PC2 = c(-23.05,  -24.71, -20.28, 10.09))
row.names(loads) <- c("100_A", "100_B", "100_C", "100_Orig")
meta <- data.frame(pch = c(17, 17, 17, 16), color = c("red", "red", "blue", "blue"))
row.names(meta) <- row.names(loads)

绘制:

x <- loads[, 1] ; y <- loads[, 2]
pch <- meta$pch
col <- meta$color

plot(x, y,
 col = col, pch = pch, cex = 2, lwd = 4,
 xlab = paste("PC1"), ylab = paste("PC2"))

现在,这将按照我在向量中的顺序绘制正确的颜色(红色和蓝色);真正的问题变成了策划 p​​ch。它绘制的不是圆圈 (pch = 16) 或三角形 (pch = 17),而是红色或蓝色数字 1!我附上了一张我的数据实际在做什么的图片。

考虑到我传递的 pch 向量不能有引号,我用下面的代码删除了引号:

pch <- meta$pch
pch <-as.vector(noquote(pch))
class(pch)
[1] "character"

但是,这会产生相同的结果(绘制数字 1)。有趣的是,当使用这段代码时,它工作正常。它把我所有的颜色都变成了蓝色,我得到了漂亮的蓝色圆圈。

plot(x, y,
 col = "blue, pch = 16, cex = 2, lwd = 4,
 xlab = paste("PC1"), ylab = paste("PC2"))

这告诉我 plot 函数无法识别由 pch 16 和 17 混合组成的长向量。

或者,如果我使用 rep 函数生成我的 pch 向量,测试表明它工作正常。但我有超过 400 行。我无法为每个 pch 手动键入 rep。我将永远在这里打字。

有什么建议吗?????

尝试将 col 定义为字符,将 pch 定义为数字,如下所示:

plot(x, y,
     col = as.character(col), pch = as.numeric(pch), cex = 2, lwd = 4,
     xlab = paste("PC1"), ylab = paste("PC2"))