R 图例中有许多组的颜色

R 图例中有许多组的颜色,r,plot,legend,R,Plot,Legend,我知道这可能是一个简单的问题,但我真的很挣扎 以iris数据集为例,我可以使用以下代码根据不同的物种使用不同的颜色进行绘图: plot(iris$Sepal.Length, iris$Sepal.Width, col=iris$Species) legend('topright', legend=c("setosa", "virginica", "versicolor")) 但事实上,我无法在图例中添加与绘图调用相同的颜色 此外,我使用的数据集有几个唯一的值。有没有一种方法可以在不手动指定颜色

我知道这可能是一个简单的问题,但我真的很挣扎

iris
数据集为例,我可以使用以下代码根据不同的物种使用不同的颜色进行绘图:

plot(iris$Sepal.Length, iris$Sepal.Width, col=iris$Species)
legend('topright', legend=c("setosa", "virginica", "versicolor"))
但事实上,我无法在图例中添加与绘图调用相同的颜色

此外,我使用的数据集有几个唯一的值。有没有一种方法可以在不手动指定颜色的情况下添加颜色

ggplot
根据
aes
选项中使用的颜色自动添加图例,但我需要对
plot
包执行相同的操作

有简单的解决办法吗

谢谢你可以试试这个

plot(Sepal.Width~Sepal.Length, data=iris, col=Species)
legend('topright', legend=levels(iris$Species), col=1:3, pch=1)

绘图调用使用与
iris$Species
值对应的默认颜色(即1,2,3,记住这是一个因子,请将
的输出视为.numeric(iris$Species)
!)

对于少数几个类,简单的解决方案是执行以下操作:

cols <- c("darkgreen", "darkblue", "orange")
plot(iris$Sepal.Length, iris$Sepal.Width, col=cols[iris$Species], pch=20)

legend('topright', legend=levels(iris$Species), 
       col= cols, pch=20)
RColorBrewer
软件包中可以找到更多别致的调色板

另外,
colorRampPalette
函数允许您混合这些调色板以获得更平滑的结果。例如:

library(RColorBrewer)
colorRampPalette(brewer.pal(9,"Blues"))(100)

你好谢谢但是有没有办法在图例选项的图例参数中指定接受plot调用的col参数?我的意思是,如果我有20个唯一的值,我应该在图例中手工指定它们吗?颜色已经过时了。例如,使用
legend=levels(iris$Species)
。。好的,我明白了。。但传奇的论点仍然存在一个“问题”。。我的意思是,我应该指定它(或分配给变量),然后调用它。。是吗?是的,正如你在第一个例子中看到的。和我犯的错误一样,颜色不规则。
library(RColorBrewer)
colorRampPalette(brewer.pal(9,"Blues"))(100)