我在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
答案 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')
希望这会有所帮助。