如何在ggplot2中向绘图和图例添加水平线


您可以使用以下语法将水平线添加到 ggplot2 中的绘图中,然后还将水平线添加为图例中的元素:

 library (ggplot2)

#create data frame with values to plot
df <- data. frame (team=rep(c(' A ', ' B '), each= 5 ),
                 assists=c(1, 3, 3, 4, 5, 7, 7, 9, 9, 10),
                 points=c(4, 8, 12, 10, 18, 25, 20, 28, 33, 35))

#create data frame that contains horizontal line location
cutoff <- data. frame (yintercept= 22 , Lines=' Cutoff ')

#create scatterplot with horizontal line and include horizontal line in legend
ggplot(df, aes(x=assists, y=points)) + 
  geom_point(aes(color=team)) +
  geom_hline(aes(yintercept=yintercept, linetype=Lines), cutoff)

通过创建仅包含水平线 y 截距值的单独数据框,我们可以将水平线添加到绘图中并自动将其添加到图例中。

以下示例展示了如何在实践中使用此语法。

示例:向 ggplot2 中的绘图和图例添加水平线

假设我们在 R 中有以下数据框,其中包含来自不同球队的篮球运动员的信息:

 #create data frame
df <- data. frame (team=rep(c(' A ', ' B '), each= 5 ),
                 assists=c(1, 3, 3, 4, 5, 7, 7, 9, 9, 10),
                 points=c(4, 8, 12, 10, 18, 25, 20, 28, 33, 35))

#view data frame
df

   team assists points
1 To 1 4
2 to 3 8
3 to 3 12
4 to 4 10
5 to 5 18
6 B 7 25
7 B 7 20
8 B 9 28
9 B 9 33
10 B 10 35

假设我们要在 ggplot2 中创建一个散点图,以可视化每个球员基于其球队的得分和助攻值,然后在 y = 22 处添加一条水平线来定义好与坏之间差异的“阈值”玩家。

我们可以使用以下语法来做到这一点:

 library (ggplot2)

#create data frame that contains horizontal line location
cutoff <- data. frame (yintercept= 22 , Lines=' Cutoff ')

#create scatterplot with horizontal line and include horizontal line in legend
ggplot(df, aes(x=assists, y=points)) + 
  geom_point(aes(color=team)) +
  geom_hline(aes(yintercept=yintercept, linetype=Lines), cutoff) 

ggplot2 在图例中添加一条水平线

请注意,图右侧的图例包含圆圈,指示图上的哪些点属于哪些团队,图例中还添加了一条水平线来表示截止线。

如果要更改图例中的水平线标题,只需编辑中断数据框的行列中的文本即可。

例如,我们可以使用以下语法将水平线的标签更改为“善与恶阈值”:

 library (ggplot2)

#create data frame that contains horizontal line location
cutoff <- data. frame (yintercept= 22 , Lines=' Cutoff of Good vs. Bad ')

#create scatterplot with horizontal line and include horizontal line in legend
ggplot(df, aes(x=assists, y=points)) + 
  geom_point(aes(color=team)) +
  geom_hline(aes(yintercept=yintercept, linetype=Lines), cutoff) 

请注意,图例中水平线的标签已更改。

其他资源

以下教程解释了如何在 ggplot2 中执行其他常见任务:

如何更改ggplot2中的图例标题
如何更改ggplot2中的图例大小
如何更改ggplot2中的图例位置

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注