我有一个包含两个类的数据框。我想绘制包含三列(x1,x2,类)的数据框。 class列具有0或1个变量来演示该类。我想以每个类都有其自身颜色的方式来绘制此数据框。例如class 0 =“ red and class 1 =” blue“。您能帮我什么是最简单的命令?
答案 0 :(得分:2)
没有示例数据,我来弥补:
df <- data.frame(x=1:10, y=1:10, z=rep(0:1, len=10))
有几种方法可以在基本图形中分配颜色。展示其中一些示例的一个示例是http://www.sthda.com/english/wiki/colors-in-r,尽管最基本的示例被遗漏了:使用palette
。
palette()
# [1] "black" "red" "green3" "blue" "cyan" "magenta" "yellow"
# [8] "gray"
这显示数字1到8将使用什么颜色,其中0不显示任何内容,而9换回到第一个。您可以覆盖这些。
以下是一些不同的方式:
par(mfrow=c(3,2))
plot(y~x, data=df, pch=16, col=z,
main="plot1")
plot(y~x, data=df, pch=16, col=1+z,
main="plot2")
plot(y~x, data=df, pch=16, col=2+z,
main="plot3")
plot(y~x, data=df, pch=16, col=ifelse(z == 1, "blue", "orange"),
main="plot4")
palette(c("magenta", "green3"))
plot(y~x, data=df, pch=16, col=1+z,
main="plot5")
palette("default") # to restore it to the default 8-color series
每个情节的注意事项:
z
(您的class
)的文字值。由于颜色0为空白,因此不会显示“ 0”级点。palette()
,以8换行)。ifelse
从字面上定义颜色,尽管虽然可以很好地使用两种颜色,但是当您拥有两个以上的类(需要嵌套的ifelse
)时,它会变得繁琐/难看。在这种情况下,我建议使用merge
引入颜色列。plot2
,但强制使用了这两种颜色。 (然后我将其还原为默认值,以免将来的地盘混乱……我的偏好。)