R语言 把ggplot的文字定位在每个角上
在这篇文章中,我们将学习如何在R编程语言中把ggplot2的文本定位到每个角落。
为了完成这项任务,我们将使用ggplot库中的geom_text()函数。我们还将使用R语言中的保留关键字,即 Inf 和 -Inf 。 这些是R编程语言中的保留关键字,它们存储的是无限和负无限的值。 Inf 存储的是最大的值,而 -Inf 存储的是最小的值。
语法
geom_text( data, aes(..), label()
首先导入所需的包,并准备一个文本列表,这些文本将进入每个角落。同时,准备一个所有X坐标和Y坐标的列表,以便将数据放在每个角上。用一些数据创建一个普通的图。现在使用geom_text(),并将如此制作的列表作为参数传递,同时也传递坐标列表以正确定位。
X、 Y 坐标列表包含 Inf 和 -Inf 的组合 , 这有助于决定角的顺序,例如(-Inf,-Inf)表示左下方,(Inf,Inf)表示右上方,等等。我们使用这些值来确定极端角。
在 文本属性 中,我们提供我们想要绘制的文本。注意:这里我们必须按照我们希望在角落里绘制的顺序提供文本数据。然后在 x_adjust, y_adjust 属性中,我们提供坐标,我们可以用它来调整文本在X和Y平面的位置。
例1 :
library(ggplot2)
# prepare the data
annotations <- data.frame(
X = c(-Inf,-Inf,Inf,Inf),
Y = c(-Inf, Inf,-Inf,Inf),
text = c("(x0,y0)","(x0,y1)",
"(x1,y0)","(x1,y1)"),
x_adjust = c(0,0,1,1),
y_adjust = c(0,1,0,1))
ggplot(cars, aes(speed, dist)) + geom_point()+
geom_text(data=annotations, aes(
x=X,y=Y,hjust=x_adjust,vjust=y_adjust,label=text))
输出
例2:
library(ggplot2)
# prepare the data
annotations <- data.frame(
X = c(-Inf,-Inf,Inf,Inf),
Y = c(-Inf, Inf,-Inf,Inf),
text = c("Shifted-Up(x0,y0)","(x0,y1)",
"Shifted-Left(x1,y0)","(x1,y1)"),
x_adjust = c(0,0,1.5,1),
y_adjust = c(-2,1,0,1)
)
#scatter plot
ggplot(cars, aes(speed, dist)) + geom_point()+
geom_text(data=annotations, aes(
x=X,y=Y,hjust=x_adjust,vjust=y_adjust,label=text))
输出