Mai*_*ura 50
data<-iris
plot(data$Sepal.Length, data$Sepal.Width, col=data$Species)
legend(7,4.3,unique(data$Species),col=1:length(data$Species),pch=1)
Run Code Online (Sandbox Code Playgroud)
应该为你做.但我更喜欢ggplot2并建议在R中使用更好的图形.
Joh*_*ohn 37
该命令palette告诉您颜色及其顺序col = somefactor.它也可以用来设置颜色.
palette()
[1] "black" "red" "green3" "blue" "cyan" "magenta" "yellow" "gray"
Run Code Online (Sandbox Code Playgroud)
为了在图表中看到您可以使用图例.
legend('topright', legend = levels(iris$Species), col = 1:3, cex = 0.8, pch = 1)
Run Code Online (Sandbox Code Playgroud)
你会注意到我只用3个数字指定了新颜色.这将像使用因素一样工作.我本可以使用最初用于为点着色的因子.这会让一切都在逻辑上流动......但我只想告诉你可以使用各种各样的东西.
你也可以具体说明颜色.尝试?rainbow初学者并从那里开始.您可以指定自己的或让R为您做.只要你使用相同的方法,你就可以了.
Mat*_*ert 19
像Maiasaura一样,我更喜欢ggplot2.透明参考手册是其中一个原因.但是,这是完成它的一种快速方法.
require(ggplot2)
data(diamonds)
qplot(carat, price, data = diamonds, colour = color)
# example taken from Hadley's ggplot2 book
Run Code Online (Sandbox Code Playgroud)
并且引起有名人士说,情节相关帖子没有完整没有情节,这里的结果如下:

这里有几个参考: qplot.R示例,注意基本上这使用了我使用的相同的钻石数据集,但之前裁剪数据以获得更好的性能.
http://ggplot2.org/book/ 手册:http://docs.ggplot2.org/current/
Tob*_*oby 16
我知道有两种方法可以按因子对绘图点进行着色,然后自动生成相应的图例.我将举两个例子:
colorRampPallete(更棘手,但很多人更喜欢/需要R的内置绘图设施)对于这两个示例,我将使用ggplot2钻石数据集.我们将使用数字列diamond$carat和diamond$price因子/分类列diamond$color.如果安装了ggplot2,则可以使用以下代码加载数据集:
library(ggplot2)
data(diamonds)
Run Code Online (Sandbox Code Playgroud)
这是一个班轮.这里的关键项是将qplot您想要着色的因子作为color参数.qplot默认情况下会为你制作一个传奇.
qplot(
x = carat,
y = price,
data = diamonds,
color = diamonds$color # color by factor color (I know, confusing)
)
Run Code Online (Sandbox Code Playgroud)
使用R的内置绘图功能来获得由因子和相关图例着色的绘图是一个4步骤的过程,它比使用ggplot2更具技术性.
首先,我们将发挥colorRampPallete作用.colorRampPallete()返回一个将生成颜色列表的新函数.在下面的代码段中,调用color_pallet_function(5)将返回从红色到橙色到蓝色的5种颜色的列表:
color_pallete_function <- colorRampPalette(
colors = c("red", "orange", "blue"),
space = "Lab" # Option used when colors do not represent a quantitative scale
)
Run Code Online (Sandbox Code Playgroud)
其次,我们需要制作一个颜色列表,每种钻石颜色只有一种颜色.这是我们将用于为各个绘图点指定颜色以及创建我们的图例的映射.
num_colors <- nlevels(diamonds$color)
diamond_color_colors <- color_pallet_function(num_colors)
Run Code Online (Sandbox Code Playgroud)
第三,我们创造了我们的情节.这可以像你可能做的任何其他情节一样完成,除了我们引用我们作为col参数的颜色列表.只要我们总是使用相同的列表,我们的颜色之间的映射diamond$colors将在我们的R脚本中保持一致.
plot(
x = diamonds$carat,
y = diamonds$price,
xlab = "Carat",
ylab = "Price",
pch = 20, # solid dots increase the readability of this data plot
col = diamond_color_colors[diamonds$color]
)
Run Code Online (Sandbox Code Playgroud)
第四个也是最后一个,我们添加了我们的图例,以便有人阅读我们的图表可以清楚地看到绘图点颜色和实际钻石颜色之间的映射.
legend(
x ="topleft",
legend = paste("Color", levels(diamonds$color)), # for readability of legend
col = diamond_color_colors,
pch = 19, # same as pch=20, just smaller
cex = .7 # scale the legend to look attractively sized
)
Run Code Online (Sandbox Code Playgroud)
漂亮,对吧?
Aar*_*ica 11
该lattice库是另一个不错的选择.在这里,我在右侧添加了一个图例,并因为其中一些重叠而抖动了这些点.
xyplot(Sepal.Width ~ Sepal.Length, group=Species, data=iris,
auto.key=list(space="right"),
jitter.x=TRUE, jitter.y=TRUE)
Run Code Online (Sandbox Code Playgroud)

的col在参数plot函数自动分配颜色整数向量.如果您转换iris$Species为数字,请注意您有1,2和3s的向量因此您可以将其应用为:
plot(iris$Sepal.Length, iris$Sepal.Width, col=as.numeric(iris$Species))
Run Code Online (Sandbox Code Playgroud)
假设您想要红色,蓝色和绿色而不是默认颜色,那么您可以简单地调整它:
plot(iris$Sepal.Length, iris$Sepal.Width, col=c('red', 'blue', 'green')[as.numeric(iris$Species)])
Run Code Online (Sandbox Code Playgroud)
您可以看到如何进一步修改上面的代码以获得任何独特的颜色组合.