首页 > 解决方案 > 具有不同颜色点的散点图

问题描述

试图用十二个点制作一个简单的散点图。这些点分为三组,每组四个,与三种土地利用类型的四个地点相关。我想为与他们的土地利用类型(住宅、工业和绿地)相关的点着色。散点图显示了香农 H 和辛普森指数(生物多样性丰富度估计,使用素食主义者)之间的关系。我可以制作情节,但不能为点着色。

请看下面的代码。我已经尝试过这种变化。我也试过散点图函数library(cars)。那行得通,但是我无法自定义点的形状/大小/颜色,只能访问默认值。

richness.fig <- plot(H, simp, xlab = "Shannon's H", ylab = "Simpson's", frame = FALSE)
points(richness.fig, "sites", pch = 19, col = "green", select = richcompare$use == "green")
points(richness.fig, "sites", pch = 19, col = "blue", select = richcompare$use == "indust")
points(richness.fig, "sites", pch = 19, col = "red", select = richcompare$use == "res")

我确实得到了一个散点图,但是是黑白的。错误消息如下所示。

Error in xy.coords(x, y) : 'x' and 'y' lengths differ

标签: rplotscatter-plot

解决方案


您可以在一次调用 plot() 中完成所有这些操作。只需将一个变量传递给描述您着色的组的“col”参数。

    richness.fig <- plot(H, simp, xlab = "Shannon's H", ylab = "Simpson's", frame = FALSE, col=richcompare$use)

如果要使用 points() 函数,则前两个参数通常指定要绘制的 X 和 Y 点。这就是为什么您会收到关于 x 和 y 长度不同的错误。因此,另一种方法是仍然这样做,但将 H 和 simp 作为前两个参数传递。

更新:自定义颜色可以按如下方式完成。

    myCols <- c("green", "red", "blue")
    richness.fig <- plot(H, simp, xlab = "Shannon's H", ylab = "Simpson's", frame = FALSE, col=myCols[richcompare$use])

向 myCols 添加尽可能多的颜色,因为您在 richcompare$use 中具有因子级别


推荐阅读