如何在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)
请注意,图右侧的图例包含圆圈,指示图上的哪些点属于哪些团队,图例中还添加了一条水平线来表示截止线。
如果要更改图例中的水平线标题,只需编辑中断数据框的行列中的文本即可。
例如,我们可以使用以下语法将水平线的标签更改为“善与恶阈值”:
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 中执行其他常见任务: