2015-05-26 19 views
7

Proszę wybaczyć moją ignorancję, jeśli jest to proste pytanie, ale nie mogę wymyślić, jak podkreślić jakąkolwiek część tytułu fabuły. Używam ggplot2.Jak podkreślić tekst w tytule lub etykiecie? (ggplot2)

Najlepsze, co mogłem znaleźć, to: annotate("segment") done by hand. Stworzyłem działkę z zabawkami, aby zilustrować jej metodę.

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

Łącze do użytku plotmath nie było "obejścia". Przyjęta odpowiedź była i może (lub powinna?) Dać ci odpowiedź. Tylko dlatego, że drugi wysiłek (który nie został przyjęty) był kludge nie jest powodem do lekkich prac @ Spacedman. –

Odpowiedz

7

Spróbuj tego:

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

Alternatywnie, jak BondedDust zwraca uwagę w komentarzach, można uniknąć połączenia paste() całkowicie, ale uważaj na for:

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

czy inaczej, nawet krótszy podejście zaproponowane przez Jana Chrzciciela, który nie korzysta expression, paste() lub wiele tyld:

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

Jeśli używasz 'expression', to czemu nie' expression (Oh ~ how ~ I ~ wish ~ for ~ podkreślenie (podkreślenie)) '. Nie ma potrzeby często mylącej funkcji 'paste()' wywołania. –

+0

@BondedDust Nie wiedziałem o tym podejściu. Kiedy próbuję tego, pojawia się błąd: 'Błąd: nieoczekiwany '~' w: " ggplot (df, aes (x = x, y = y)) + geom_point() + ggtitle (wyrażenie (Oh ~ how ~ I ~ wish ~ for ~ "' Czy robię to niepoprawnie? – Jota

+3

O cholera.To jest to słowo f, które to robi.R parser widzi "za" i wychodzi szukając '(jak to było) indeksu. machine! Try: 'expression (~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ podkreślenie)). To sprawia, że ​​ten sam błąd parsowania z' in'. –

Powiązane problemy