[英]How to make a scatterplot in R with category-specific colored text labels?
我对R和绘图仍然很陌生。 我有几个2D变量的二维矩阵
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"))
我想要做的是使用df
的第一列中的点标签制作matrix
的散点图,并在第二列中使用颜色编码为类别标签。 例如,我需要指定A=red
, B=blue
,然后散点图应显示与红色的Class1
和Class5
相关的点, Class2
和蓝色的Class4
,依此类推。 我可以使用与Class列关联的文本标签来绘制matrix
,但是无法弄清楚颜色操作。 如果您能提供帮助,请提前致谢!
A="red"; B="blue"
text( x= matrix[,1], y= matrix[,2], labels=df[,1],
col=c(A, B, "black")[ as.numeric(df[,2]) ])
基本的做法是建立一个颜色矢量,然后通过“[”运行一个选择向量。
这可以使用ggplot2 (您首先必须安装)轻松完成。 首先将它们全部放入一个大数据框架中,同时给它们一些有用的名称:
colnames(matrix) = c("x", "y")
colnames(df) = c("Class", "Category")
d = cbind(matrix, df)
然后使用ggplot
,在x
, y
, col
(用于颜色)和label
位置提供您感兴趣的新数据框的列,以及geom_text()
以指示您想要使用文本制作绘图:
library(ggplot2)
g = ggplot(d, aes(x=x, y=y, col=Category, label=Class)) + geom_text()
print(g)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.