我試圖用ggplot()和geom_text()創建一個繪圖,以便在繪圖的最右端有一個文本注釋,但仍然讓文本向左對齊。我已經嘗試了很多x定位和hjust的組合,但到目前為止還沒有結果。
舉例說明
。讓我們基于ToothGrowth內置資料集創建一個boxplot。在初始階段,我希望有一個geom_hline()具體到每個面的mean,如下:
library(ggplot2)
mean_per_panel < -聚合(len ~supp。 資料= ToothGrowth, FUN = Mean)
p<-
ggplot(ToothGrowth, aes(x = factor(dose), y = len))
geom_boxplot()
geom_hline(data = mean_per_panel,
aes(yintercept =len, 組= "supp"),
linetype = 2,
color = "red")
facet_wrap(~supp)
theme_bw()
p

我不成功的嘗試
首先,我在我的mean_per_panel資料摘要中補充了一個label列:
library(dplyr,警告。 沖突= FALSE)。
mean_per_panel_with_label <-
mean_per_panel %>%。
mutate(my_label = paste("mean for"/span>, supp, "是。 ", round(len。 2), sep = "
"))
平均值_per_panel_with_label
#> supp len my_label
#> 1 OJ 20.66333 mean for
OJ
是。
20.66
#> 2 VC 16.96333的平均值為
VC
是。
16.96
下面是一些實作預期輸出的嘗試,所有這些嘗試都不成功:
my_geom_text <- function(x_pos, . ...) {
geom_text(data = mean_per_panel_with_label,)
aes(y = len, 標簽= my_label),
vjust = 1,
x = x_pos,
...,
color = "red")
}
p
my_geom_text(x_pos = 2。 hjust = 0)

p
my_geom_text(x_pos = 2. 8, hjust = 0)

p
my_geom_text(x_pos = Inf。 hjust = 1)

p
my_geom_text(x_pos = Inf。 hjust = 1. 2)

創建于2021-09-11,由reprex包(v2.0.0)
有沒有一種方法可以讓文本在最右邊顯示總是(就像x = Inf所做的那樣),同時又是左對齊的?
uj5u.com熱心網友回復:
我相信ggtext的geom_textbox()可以做到你所尋找的東西。它引入了一個分離的hjust和halign來分別對齊盒子和文本。
library(ggtext)
library(ggplot2)
library(dplyr)
mean_per_panel <- ToothGrowth %>%
group_by(supp) %>%
summarise(mean = mean(len)) %> %
mutate(my_label = paste("mean for"。 supp, "是。 ", round(mean。 2), sep = "< br>"))
ggplot(ToothGrowth, aes(as. factor(dose)。
geom_boxplot()
geom_hline(data = mean_per_panel, aes(yintercept = mean),
color = "red")
geom_textbox()
資料 = mean_per_panel,
aes(y = mean, x = Inf。 label = my_label),
hjust = 1, halign = 0 ,
箱子。 顏色 = NA。 fill = NA, # Hide the box fill and outline
box.padding = unit(rep(2. 75, 4)。 "pt")。 color = "red",
vjust = 1, width = NULL
)
facet_grid(~ supp)

創建于2021-09-11,由reprex包(v2.0.1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/318937.html
標籤:
上一篇:當使用geom_smooth來繪制一條最佳擬合線時,我得到了。`stat_smooth()`:invalid'x'typein'x||y'inR

