📜  如何在R中的绘图之外绘制图例?

📅  最后修改于: 2022-05-13 01:55:26.077000             🧑  作者: Mango

如何在R中的绘图之外绘制图例?

在本文中,我们将讨论如何在 R 编程语言的绘图之外绘制图例。

我们首先使用 plot()函数创建一个没有图例的基本图,并使用 R 语言的 par()函数在图例周围添加一个边距。我们将创建所需的边距并使 xpd 参数为 TRUE。这将使我们的绘图裁剪到图形区域。

句法:

par( mar, xpd)

在哪里,

  • mar:确定包含边距的向量。
  • xpd:它是一个布尔值。如果为 FALSE,所有绘图都被裁剪到绘图区域,如果为 TRUE,所有绘图都被裁剪到图形区域

然后我们使用 legend()函数在其上添加一个图例层。要将图例放在图上所需的位置,我们使用图例函数的 inset 参数。

句法:

legend(position, inset, title, legend, pch, col )

在哪里,

  • position:确定图例的位置。
  • 插图:确定位置的偏移。
  • title:确定图例的标题。
  • pch:确定用于表示数据点的符号。
  • col:确定数据点的颜色。

示例 1:

这是 R 语言中的一个基本图,图例的右上角有图例。

R
# create sample data frame
sample_data <- data.frame(x = c(rnorm(50), rnorm(50, 5)),      
                   y = c(rnorm(50), rnorm(50, 5)),
                   group = c(rep(1, 50), rep(2, 50))) 
  
# create margin around plot
par(mar = c(3, 3, 3, 8), xpd = TRUE)
  
# Draw scatter plot
plot(sample_data$x, sample_data$y,                                   
     pch = sample_data$group+10,
     col = sample_data$group)
  
# Draw legend
legend("topright", inset = c(-0.3, 0.1),                   
       legend = c("Group 1","Group 2"),
       pch = c(11,12), col = 1:2)


R
# create sample data frame
sample_data <- data.frame(x = c(rnorm(50), rnorm(50, 5), rnorm(50, 10)),      
                   y = c(rnorm(50), rnorm(50, 5), rnorm(50, 10)),
                   group = c(rep(1, 50), rep(2, 50), rep(3, 50))) 
  
# create margin around plot
par(mar = c(10, 3, 3, 3), xpd = TRUE)
  
# Draw scatter plot
plot(sample_data$x, sample_data$y,                                   
     pch = sample_data$group+10,
     col = sample_data$group)
  
# Draw legend
legend("topright", inset = c(0.4, 1.2),                   
       legend = c("Group 1","Group 2","Group 3"),
       pch = c(11,12,13), col = 1:3)


输出:

示例 2:

这里是 R 语言中的一个基本图,图例位于图的底部。

R

# create sample data frame
sample_data <- data.frame(x = c(rnorm(50), rnorm(50, 5), rnorm(50, 10)),      
                   y = c(rnorm(50), rnorm(50, 5), rnorm(50, 10)),
                   group = c(rep(1, 50), rep(2, 50), rep(3, 50))) 
  
# create margin around plot
par(mar = c(10, 3, 3, 3), xpd = TRUE)
  
# Draw scatter plot
plot(sample_data$x, sample_data$y,                                   
     pch = sample_data$group+10,
     col = sample_data$group)
  
# Draw legend
legend("topright", inset = c(0.4, 1.2),                   
       legend = c("Group 1","Group 2","Group 3"),
       pch = c(11,12,13), col = 1:3)

输出: