R图中图例/颜色不匹配

时间:2015-08-02 15:06:11

标签: r plot legend

我在R中创建了几个图。有时,程序与图中变量的颜色与图例中的变量颜色不匹配。在附件中(不幸的是,我还无法附加声誉的图像b / c),前两个图表被分配了黑/红配色方案。但是,第三张图表会自动使用绿色/黑色并使图例保持黑色/红色。我不明白为什么会这样。

如何防止这种情况发生? 我知道可以分配颜色,但我很难找到明确的方法来做到这一点。

代码:

plot(rank, abundance, pch=16, col=type, cex=0.8)
legend(60,50,unique(type),col=1:length(type),pch=16)

plot(rank, abundance, pch=16, col=Origin, cex=0.8)
legend(60,50,unique(Origin),col=1:length(Origin),pch=16)


Below is where color pattern won't match

plot(rank, abundance, pch=16, col=Lifecycle, cex=0.8)
legend(60,50,unique(Lifecycle),col=1:length(Lifecycle),pch=16)

数据框如下所示:

Plant    rank   abundance  Lifecycle    Origin   type
X         1         23       Perennial   Native  Weedy
Y         2         10       Annual      Exotic  Ornamental
Z         3         9        Perennial   Native  Ornamental

1 个答案:

答案 0 :(得分:1)

首先,我创建了一些假数据。

 df <- data.frame(rank = 1:10, abundance = runif(10,10,100), 
       Lifecycle = sample(c('Perennial', 'Annual'), 10, replace=TRUE))

然后我明确地说出了我想要的颜色。

cols=c('dodgerblue', 'plum')

然后我使用因子df$Lifecycle绘制颜色点。

plot(df$rank, df$abundance, col = cols[df$Lifecycle], pch=16)

当上面使用因子df$Lifecycle时,它会将其转换为cols的数字引用,以便按字母顺序对值进行排序。因此,在图例中,我们只需要对唯一的df$Lifecycle值进行排序,然后将其设置为我们的颜色向量(cols)。

legend(5, 40, sort(unique(df$Lifecycle)), col=cols, pch=16, bty='n')

希望这会有所帮助。