为标记分配颜色,以从DF中选择相应的颜色

时间:2018-07-20 14:59:33

标签: r dataframe plot

我想为绘图中的特定标志(C)指定特定颜色(POP)。我尝试过

PC <- data.frame(POP = c("A", "C", "C", "B"), 
                 X = c(0.1,0.2,0.3,0.4), 
                 Y = c(0.1,0.2,0.3,0.4))

COLS <- data.frame(C = c("red", "grey", "brown"), 
                   P = c("A", "B","C"))

plot(PC$X, PC$Y, col = COLS$C[which(COLS$P == PC$POP)])

但出现以下错误

 Warning messages:
  1: In `==.default`(COLS$P, PC$POP): longer object length is not a multiple of shorter object length
  2: In is.na(e1) | is.na(e2): longer object length is not a multiple of shorter object length

结果图中的颜色不正确。

1 个答案:

答案 0 :(得分:0)

放入col = COLS$C[match(PC$POP, COLS$P)]。参见?match

您不能安全地将"=="应用于两个不同长度的向量。逻辑与您将两个不同长度的向量相加相同。回收规则适用。该规则在某些应用程序中很有用,但是您有责任做正确的事/产生所需的结果。

此外,您需要在stringsAsFactors = FALSE调用中使用data.frame(),以避免将颜色变量(字符串)编码为因子(整数)。