R绘图中的图例/颜色不匹配
我在R中创建了几个绘图。偶尔,程序会将绘图中变量的颜色与图例中变量的颜色不匹配。在所附文件中(不幸的是,我还不能附加声誉的图像b/c),前两个图形被分配了一个黑色/红色的颜色方案。但是,第三个图表自动使用绿色/黑色,并使用黑色/红色保留图例。我不明白为什么会这样 我怎样才能防止这种情况发生? 我知道可以指定颜色,但我正在努力找到一个明确的方法来做到这一点 代码:R绘图中的图例/颜色不匹配,r,plot,legend,R,Plot,Legend,我在R中创建了几个绘图。偶尔,程序会将绘图中变量的颜色与图例中变量的颜色不匹配。在所附文件中(不幸的是,我还不能附加声誉的图像b/c),前两个图形被分配了一个黑色/红色的颜色方案。但是,第三个图表自动使用绿色/黑色,并使用黑色/红色保留图例。我不明白为什么会这样 我怎样才能防止这种情况发生? 我知道可以指定颜色,但我正在努力找到一个明确的方法来做到这一点 代码: plot(rank, abundance, pch=16, col=type, cex=0.8) legend(60,50,uniqu
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
首先,我创建了一些虚假数据
df <- data.frame(rank = 1:10, abundance = runif(10,10,100),
Lifecycle = sample(c('Perennial', 'Annual'), 10, replace=TRUE))
然后,我使用因子df$Lifecycle
绘制颜色点
plot(df$rank, df$abundance, col = cols[df$Lifecycle], pch=16)
当上面使用系数df$Lifecycle
时,它将其转换为对cols
的数字引用,以便按字母顺序对值进行排序。因此,在图例中,我们只需要对唯一的df$Lifecycle
值进行排序,然后将颜色向量(cols
)交给它
希望这能有所帮助 也许
生命周期中有两个以上的因子级别
或者一个NA
或两个混合的调色板()
会告诉您因子使用的颜色顺序,或者查看绘图(1:10,col=1:10)
。尝试在图例中更改为col=unique(Lifecycle)
。这一点很好。我的评论是不正确的,因为如果有一个NA
混合在一起,它会被绘制在图例中@nongkrong的建议(隔离独特价值)应该有效。如果您想绝对确定,您可以在绘图和图例命令中使用sort(unique(Lifecycle))
,这将删除NA
s并对因子级别进行排序。@Tad Dallas您介意将其作为一个答案发布吗?我将发布一个更连贯/错误更少的版本,以说明我在评论中所描述的内容。哈哈。请随意编辑它。
plot(df$rank, df$abundance, col = cols[df$Lifecycle], pch=16)
legend(5, 40, sort(unique(df$Lifecycle)), col=cols, pch=16, bty='n')