Etichette facet ggplot2: la seconda riga non viene visualizzata
Ho uno script che produceva una trama sfaccettata con strisce di testo su più righe. Ma questo non funziona più. Di seguito è riportato un MWE da cui deve essere analizzato il testo della striscia, ad esempio "bold(A)\nreally~long~extra"in:
Un
extra davvero lungo
La seconda riga è tagliata come puoi vedere tramite la funzione di debug. Ho anche aumentato i margini ma inutilmente ...
Qualche idea qual è il problema?
exmpl = data.frame(a = 1:100,
b = rep(1:5, 20),
f = factor(rep(LETTERS[1:5], each = 20))) %>%
as_tibble() %>%
mutate(f2 = paste0("bold(",f, ")\nreally~long~extra"))
ggplot(exmpl, aes(x = b, y = a)) +
facet_grid(. ~ f2, labeller = label_parsed) +
geom_point() +
theme(strip.text.x = element_text(size = 10, hjust = 0, margin = margin(.5, 0, .5, 0, "cm"), debug = T))
MODIFICARE:
E già che ci siamo, ho escogitato questa soluzione alternativa perché la mia precedente soluzione di utilizzo label_bquote()non funziona più. Per favore, dai un'occhiata a quest'altra domanda , forse puoi aiutarmi anche con questo?
Risposte
Non sono sicuro che funzioni per te. Ma un modo per ottenere il risultato desiderato sarebbe utilizzare il ggtextpacchetto, che ti consente di modellare le etichette delle faccette utilizzando HTML e CSS. A tal fine ggtextintroduce un nuovo elemento tematico element_markdown. Prova questo:
library(ggplot2)
library(dplyr)
exmpl = data.frame(a = 1:100,
b = rep(1:5, 20),
f = factor(rep(LETTERS[1:5], each = 20))) %>%
as_tibble() %>%
mutate(f2 = paste0("<b>", f, "</b><br>", "really long extra"))
ggplot(exmpl, aes(x = b, y = a)) +
facet_grid(. ~ f2) +
geom_point() +
theme(strip.text.x = ggtext::element_markdown(size = 10, hjust = 0))
E per la seconda domanda nel tuo precedente post una soluzione potrebbe essere così:
mylabel <- function(x) {
mutate(x, Species = paste0(letters[Species], " <i>", Species, "</i>"))
}
p <- ggplot(iris, aes(Sepal.Length, Sepal.Width)) + geom_point()
p + facet_grid(. ~ Species, labeller = mylabel) +
theme(strip.text.x = ggtext::element_markdown())