R语言 如何给矩阵图中的点着色?

5n0oy7gb  于 2023-03-05  发布在  其他
关注(0)|答案(1)|浏览(200)

我用R生成了种群间按距离划分的隔离图。在这种图中,x轴表示地理距离,y轴表示一对种群之间的遗传距离(即每个点对应于由一定地理距离和一定遗传距离分开的一对种群)。为了产生该图,我使用两个矩阵,一个给出了每对种群的地理距离,另一个给出了每对种群的遗传距离,因此我的矩阵在列和行中都有种群的名称。
我生成一个简单的图:plot(Dgeo[lower.tri(Dgeo)], Dgen[lower.tri(Dgen)], xlab = "d_geo", ylab = "d_gen", pch=20, cex=.5, col="cadetblue4", ylim =c(0, 1))
我的每个种群都是三个种群中某个地理分布区域的一部分,我的目标是根据一个条件来给这些点着色:如果被比较的两个种群来自相同的地理分布区,则对应于该对的点具有某种颜色;如果其中一个群体来自地理区域A,另一个群体来自地理区域B,则该点具有另一种颜色;等等。你知道如何用R编写这个代码吗?我很感激你们花时间一起思考这个问题。
再见
我曾尝试创建一个像另外两个矩阵一样的矩阵,其中每个条件包含不同的字母,并且我使用了参数col = my_colour_matrix,但没有成功

a14dhokn

a14dhokn1#

生成一个颜色矩阵cols,其中包含与数据矩阵维度相同的分布区域交互作用,然后使用这些矩阵进行绘图。

玩具数据
set.seed(42)
cols <- matrix(colors()[sample(600, 20)], nrow=5)
dd <- matrix(sample(20), nrow=5)
de <- matrix(sample(20), nrow=5)
plot(dd[lower.tri(dd)], de[lower.tri(de)], 
  xlab = "d_geo", ylab = "d_gen",  pch=19, cex=2, col=cols[lower.tri(cols)])

相关问题