在理解R中的这种绘图功能时会产生困惑

时间:2012-03-08 19:43:39

标签: r

在研究线性建模时,我曾阅读过以下用于绘图的R脚本:

plot(d[, 2], d[, 4], xlab="d[, 2]", ylab="d[, 4]", col=2 * (1 + (d[, 1] == "A")))

这里d是数据集。让我感到困惑的是如何理解col=2 * (1 + (d[, 1] == "A"))要达到的目标?

2 个答案:

答案 0 :(得分:3)

实际上,它是根据第一列(col)的值设置点的颜色(d[,1])。可以通过计算可能性来获得值之间的具体映射:

如果第一列为“A”,则{p> d[,1]=="A"TRUE,否则为FALSE

1+(d[,1]=="A")获取此TRUE / FALSE值并将其转换为数字(分别为1和0),以便可以将其添加到数字1中。如果是第一个,则为2列为“A”,否则为1

2*(1+(d[,1]=="A"))只是将这些数字乘以2,如果第一列为“A”则为4,否则为2

净效果是与第一列为“A”的行对应的点以彩色4绘制,而所有其他点以彩色2绘制。

要确定这些数字所指的颜色,它们是palette()的结果的索引。

> palette()[4]
[1] "blue"
> palette()[2]
[1] "red"

第一列为“A”的点为蓝色,其他为红色。

答案 1 :(得分:1)

我的回答迟到了,但它可能对某人有帮助......

参数col决定了图上点的颜色。

# Create some data to plot.
x=1:5
y=x^2
group = c("A", "A", "B", "B", "C")

group == "A" # Outputs a logical vector.
# [1]  TRUE  TRUE FALSE FALSE FALSE

2 * (1 + (group == "A")) # Changes logical vector to integers.
# [1] 4 4 2 2 2

# col parameter interprets integers as colors for each point in the plot.
plot(x, y, col=2 * (1 + (group == "A")), pch=20, cex=3)

enter image description here