R语言 如何以矩阵形式绘制数据的散点图

z31licg0  于 2023-05-26  发布在  其他
关注(0)|答案(1)|浏览(178)

我有矩阵形式的数据。我有两个这样的矩阵,并希望将其绘制在一起进行比较。

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绘制此数据的散点图?
非常感谢!

dohp0rv5

dohp0rv51#

你可以先将矩阵值存储到一个 Dataframe 中。您可以使用函数c(matrix1)将矩阵转换为向量,然后将此向量存储到 Dataframe 中。
然后,您可以绘制每个dataframe新变量相互之间的关系。

### 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()行。

在第二个问题之后,如果你想添加标签,你有很多选择。您可以使用以下代码找到两个选项,要么使用ggrepel库中的geom_text_repel,要么使用ggplot2库中的geom_text,在ggplot2库中使用widthheight参数。

### 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")

geom_text_repel

geom_text

相关问题