2015-05-26 11 views
7

Per favore perdona la mia ignoranza se questa è una domanda semplice, ma non riesco a capire come sottolineare qualsiasi parte di un titolo di trama. Sto usando ggplot2.Come sottolineare il testo in un titolo o etichetta? (ggplot2)

Il meglio che ho trovato era annotate("segment") done by hand e ho creato una trama giocattolo per illustrare il suo metodo.

df <- data.frame(x = 1:10, y = 1:10) 

rngx <- 0.5 * range(df$x)[2] # store mid-point of plot based on x-axis value 
rngy <- 0.5 * range(df$y)[2] # stores mid-point of y-axis for use in ggplot 

ggplot(df, aes(x = x, y = y)) + 
    geom_point() + 
    ggtitle("Oh how I wish for ...") + 
    ggplot2::annotate("text", x = rngx, y = max(df$y) + 1, label = "underlining!", color = "red") + 
    # create underline: 
    ggplot2::annotate("segment", x = rngx-0.8, xend = rngx + 0.8, y= 10.1, yend=10.1) 

enter image description here

uses bquote(underline() with base R

pertains to lines over and under nodes on a graph

uses plotmath and offers a workaround, but it didn't help

+0

Il collegamento all'utilizzo del diagramma non era una "soluzione". L'accettato era una risposta e potrebbe (o dovrebbe?) Darti la risposta. Solo perché un secondo tentativo (che non è stato accettato) è stato un gioco da ragazzi, non c'è motivo di minimizzare il lavoro di @ Spacedman. –

risposta

7

Prova questo:

ggplot(df, aes(x = x, y = y)) + geom_point() + 
    ggtitle(expression(paste("Oh how I wish for ", underline(underlining)))) 

In alternativa, come sottolinea BondedDust nei commenti, è possibile evitare la chiamata paste() del tutto, ma attenzione per la for:

ggplot(df, aes(x = x, y = y)) + geom_point() + 
    ggtitle(expression(Oh~how~I~wish~'for'~underline(underlining))) 

O un altro approccio ancora più breve suggerito da Baptiste che non utilizza expression, paste() o le numerose tilde:

ggplot(df, aes(x = x, y = y)) + geom_point() + 
    ggtitle(~"Oh how I wish for "*underline(underlining)) 
+0

Se si utilizza 'espressione', allora perché non? Espressione (Oh ~ come ~ I ~ wish ~ per ~ underline (sottolineatura))'. Non c'è bisogno della chiamata 'paste()' che crea confusione. –

+0

@BondedDust Non sapevo di questo approccio. Quando provo, ottengo un errore: 'Errore: imprevisto '~' in: " ggplot (df, aes (x = x, y = y)) + geom_point() + ggtitle (espressione (Oh ~ how ~ Desidero ~ per ~ "" Lo sto facendo in modo errato? – Jota

+3

Oh dannazione, è la f-word che lo sta facendo. L'analizzatore R vede "per" e cerca "per" (per così dire) un indice. machine! Prova: 'espressione (Oh ~ come ~ I ~ wish ~ 'per' ~ underline (sottolineatura))'. Fa lo stesso errore di analisi con 'in'. –

Problemi correlati