我正在尝试使用常规plot()
fcn在底数R中作图。但是,传递要使用的pch的向量时,它不会绘制pch,只会绘制数字“ 1”,而不是我要调用的pch的形状。
生成一些数据(我的真实数据对于加载和元对象都具有400行以上:
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行。我无法为每个密码手动输入rep
。我将在这里永恒印出来。
关于做什么的任何建议????
答案 0 :(得分:1)
尝试将col
定义为字符,将pch
定义为数字,如下所示:
plot(x, y,
col = as.character(col), pch = as.numeric(pch), cex = 2, lwd = 4,
xlab = paste("PC1"), ylab = paste("PC2"))