在 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"))
现在,这将按照我在向量中的顺序绘制正确的颜色(红色和蓝色);真正的问题变成了策划 pch。它绘制的不是圆圈 (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"))
我正在尝试使用常规 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"))
现在,这将按照我在向量中的顺序绘制正确的颜色(红色和蓝色);真正的问题变成了策划 pch。它绘制的不是圆圈 (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"))