我有一個ggplot2物件,使用facet_wrap在一張圖片中制作了26個獨立的直方圖,但是我想為每個圖形分配獨立的x標簽(每個軸上的數字都很好,我只是想在每個圖下面放一些自定義的文本)。我在google和stackoverflow上搜索,試圖找到一個答案,但沒有結果。
uj5u.com熱心網友回復:
有幾種方法可以做到這一點......但沒有一種方法像你所期望的那樣非常直接。 我假設你想用新的標題替換默認的X軸標題,所以我們將從這里開始。 下面是一個來自iris資料集的例子:
library(ggplot2)
p <- ggplot(iris, aes(Sepal。 長度,萼片.寬度)
geom_point()
facet_wrap(~Species)
使用帶狀文本放置
為每個軸創建特定標題的一種方法是使用條狀文本(也稱為面狀標簽)。 我們的想法是將條狀文本放置在面的底部(通常默認是在頂部),并對格式進行混亂處理。ggplot(iris, aes(Sepal. 長度,萼片.寬度)
geom_point()
labs(x=NULL # remove axis title
facet_wrap()
~Species,
strip.position = "bottom") # move strip position
主題()
strip.place = "outside", # format to look like title
strip.background = element_blank()
)
在這里我們做幾件事:
使用 Facet Labels 制作您自己的標簽
。做我們上面做的事情......但制作你自己的標簽呢? 你可以通過設定一個命名的向量as.labeller()來調整帶狀文本標簽(面狀標簽)。 否則,就和上面的變化一樣。 下面是一個例子:
my_strip_labels <- as_labeller(c()
"setosa" = "My Setosa",
"versicolor" = "你的versicolor",
"virginica" = "其他一些東西"
))
ggplot(iris, aes(Sepal。 長度,萼片.寬度)
geom_point()
labs(x=NULL)
facet_wrap()
~Species, labeller = my_strip_labels, # add labels>
strip.position = "bottom")
主題()
strip.place = "outside",
strip.background = element_blank()
)
保留面的標簽
如果你想保留你的分面標簽,而只是在每個分面下面添加一個軸的標題呢? 好吧,也許你可以通過annotation_custom()來做到這一點,并制作一些槽,但我認為將這些槽作為一個文本幾何體來放置可能更容易。 要做到這一點,我們的想法是,你在你的繪圖區域之外添加一個文本幾何體,并將標簽文本本身映射到面。 你需要用一個單獨的資料框架來做這件事(以避免重疊),并且該資料框架需要包含兩列:一列的標簽與你的切面列的標簽相同,另一列將用于存盤我們首選的軸標題文本。
下面是一些有效的方法:
axis_titles <- data.frame()
物種 = c("setosa"/span>, "versicolor", "virginica"),
axis_title = c("Setosa的軸"。 "Versi's Axis", "Virgin's Axis")
)
p labs(x=NULL)
geom_text()
data=axis_titles,
aes(label=axis_title)。 hjust=0. 5,
x=min(iris$Sepal。 長度) diff(range(iris$Sepal. 長度))/2,
y=1. 7, color='red'/span>。 fontface='bold'.
)
coord_cartesian(clip="off")
主題()
plot.margin= margin(b=30)
)
在這里我們要做幾件事:
geom_text()鏈接到新的資料框架并修改位置。 注意我在數學上將位置固定在X軸的 "中間"。 我手動放置了y值,但是如果你想的話,你也可以在那里使用一個方程式。
clip="off"。 這一點很重要,因為在clip="on"的情況下,如果任何幾何體在面板區域之外,它將被阻止顯示。
uj5u.com熱心網友回復:
這并不完全是你想要的,但是是我能想到的最好的解決方案
library(ggplot2)
mtcars%>%
ggplot(Aes(drat, hp))
geom_point() 。
facet_wrap(~gear,strip. position = "bottom")
theme_dark()
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/306873.html
標籤:





