具有两个类别的数据集的基本图

时间:2019-05-20 14:14:07

标签: r dataframe

我有一个包含两个类的数据框。我想绘制包含三列(x1,x2,类)的数据框。 class列具有0或1个变量来演示该类。我想以每个类都有其自身颜色的方式来绘制此数据框。例如class 0 =“ red and class 1 =” blue“。您能帮我什么是最简单的命令?

1 个答案:

答案 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

sample colors

每个情节的注意事项:

  1. 使用z(您的class)的文字值。由于颜色0为空白,因此不会显示“ 0”级点。
  2. 由于存在0空白问题,我们可以将它们偏移1以得到两种真实的颜色。
  3. 或者,如果我们想要的颜色碰巧是连续的,我们也可以偏移任何整数(根据palette(),以8换行)。
  4. 我们可以用ifelse从字面上定义颜色,尽管虽然可以很好地使用两种颜色,但是当您拥有两个以上的类(需要嵌套的ifelse)时,它会变得繁琐/难看。在这种情况下,我建议使用merge引入颜色列。
  5. 类似于plot2,但强制使用了这两种颜色。 (然后我将其还原为默认值,以免将来的地盘混乱……我的偏好。)