我有矩阵形式的数据。我有两个这样的矩阵,并希望将其绘制在一起进行比较。
Type1: A B C D A 1 2 3 4 B 2 1 7 8 C 3 7 1 9 D 4 8 9 1
Type2 A B C D A 1 12 13 14 B 12 1 17 18 C 13 17 1 19 D 14 18 19 1
我想保留类型1作为x轴,类型2作为y轴。如何使用R绘制此数据的散点图?非常感谢!
dohp0rv51#
你可以先将矩阵值存储到一个 Dataframe 中。您可以使用函数c(matrix1)将矩阵转换为向量,然后将此向量存储到 Dataframe 中。然后,您可以绘制每个dataframe新变量相互之间的关系。
c(matrix1)
### Import library library(ggplot2) ### Simulating data df <- data.frame( coordinate=c("AA", "AB", "AC", "AD", "BA", "BB", "BC", "BD", "CA", "CB", "CC", "CD", "DA", "DB", "DC", "DD"), matrix1=c(1, 2, 3, 4, 2, 1, 7, 8, 3, 7, 1, 9, 4, 8, 9, 1), matrix2=c(1, 12, 13, 14, 12, 1, 17, 18, 13, 17, 1, 19, 14, 18, 19, 1)) ### Display plot ggplot(data=df, aes(x=matrix1, y=matrix2)) + geom_point() + geom_line() + scale_x_continuous(limits=c(0, 20), breaks=seq(0, 20, 1)) + scale_y_continuous(limits=c(0, 20), breaks=seq(0, 20, 1))
有时连接点没有意义,如果是这样,您可以删除geom_line()行。
geom_line()
在第二个问题之后,如果你想添加标签,你有很多选择。您可以使用以下代码找到两个选项,要么使用ggrepel库中的geom_text_repel,要么使用ggplot2库中的geom_text,在ggplot2库中使用width和height参数。
ggrepel
geom_text_repel
ggplot2
geom_text
width
height
### Update group of labels with the same coordinates df$matrixboth <- paste(df$matrix1, df$matrix2) ### Display plot ggplot(data=df, aes(x=matrix1, y=matrix2, label=coordinate)) + geom_point() + geom_line(color="#6aa6e7", size=1) + scale_x_continuous(limits=c(0, 20), breaks=seq(0, 20, 1)) + scale_y_continuous(limits=c(0, 20), breaks=seq(0, 20, 1)) + # geom_text(position=position_jitter(width=0.6, height=0.6, aes(color=matrixboth)) + ggrepel::geom_text_repel(aes(label=coordinate, color=matrixboth)) + theme(legend.position="none")
1条答案
按热度按时间dohp0rv51#
你可以先将矩阵值存储到一个 Dataframe 中。您可以使用函数
c(matrix1)
将矩阵转换为向量,然后将此向量存储到 Dataframe 中。然后,您可以绘制每个dataframe新变量相互之间的关系。
有时连接点没有意义,如果是这样,您可以删除
geom_line()
行。在第二个问题之后,如果你想添加标签,你有很多选择。您可以使用以下代码找到两个选项,要么使用
ggrepel
库中的geom_text_repel
,要么使用ggplot2
库中的geom_text
,在ggplot2
库中使用width
和height
参数。geom_text_repel
geom_text