1

我对 R 和绘图仍然很陌生。我有几个二维矩阵是

matrix <- matrix(c(0,1,2,3,4,4,3,2,1,0), 5, 2)

它们都与带有类别标签的两列的单个数据框相关联,这些标签存储在

df <- data.frame(c("Class1","Class2","Class3","Class4","Class5"), c("A","B","C","B","A"))

我想要做的是matrix使用第一列中的点标签制作散点图df,并将颜色编码为第二列中的类别标签。例如,我需要指定A=red, B=blue,然后散点图应该以红色和蓝色显示与Class1和相关的点,以此类推。我可以使用与 Class 列关联的文本标签进行绘图,但无法弄清楚颜色操作。如果您能提供帮助,请提前致谢!Class5Class2Class4matrix

4

2 回答 2

4
A="red"; B="blue"
text( x= matrix[,1], y= matrix[,2], labels=df[,1], 
         col=c(A, B, "black")[ as.numeric(df[,2]) ])

基本做法是建立一个颜色向量,然后通过“[”运行一个选择向量。

于 2013-04-17T04:43:05.620 回答
0

这可以使用ggplot2(您首先必须安装)轻松完成。首先将它们全部放入一个大数据框中,同时给它们一些有用的名称:

colnames(matrix) = c("x", "y")
colnames(df) = c("Class", "Category")
d = cbind(matrix, df)

然后使用,提供您对、、(颜色)和位置ggplot感兴趣的新数据框的列,并指示您要使用文本制作图:xycollabelgeom_text()

library(ggplot2)
g = ggplot(d, aes(x=x, y=y, col=Category, label=Class)) + geom_text()
print(g)

在此处输入图像描述

于 2013-04-17T04:09:17.187 回答