los leyenda ggplot escala ejes como cambiar r ggplot2

escala - Letras griegas, símbolos y saltos de línea dentro de una etiqueta de leyenda ggplot



leyenda en ggplot2 (1)

estoy tratando de

  1. tener saltos de línea (automáticos o forzados)
  2. justifica el texto (izquierda o derecha e izquierda)
  3. tener letras griegas y signos de porcentaje

dentro de una etiqueta de leyenda gglot.

He experimentado con varios métodos, pero no puedo combinar todos los trucos que leí.

Puedo obtener saltos de línea insertando /n en las etiquetas, pero eso no parece funcionar con letras griegas, no dentro de las etiquetas de leyenda. O podría tener saltos de línea y letras griegas en un gráfico base combinando mtext() y bquote() para insertar un fragmento de texto en el gráfico, ( EDITAR ), pero como lo señaló Gregor en la sección de comentarios, esto no funciona. con ggplot . A continuación, combino una list con paste0() para pasar texto a las etiquetas de leyenda: el problema es que no puedo encontrar la forma de insertar letras griegas, por ejemplo, gamma.

Agradecido por las sugerencias.

Aquí hay un MWE con uno de mis intentos ( Editar: MWE mejorado):

label1.line1 <- "Not much to say about this one" label2.line1 <- "blabla blabla, blabla blabla, blee blee blee (bling, bling, bling)," label2.line2 <- paste0("(", "1900-2014: g = 1.50%, gamma = 2.75%, and r = 2.30%",")") label3.line1 <- "blabla blabla, blabla blabla, blee blee blee (bling, bling, bling)," label3.line2 <- paste0("(", "1900-2014: g = 2.50%, gamma = 1.75%, and r = 2.30%",")") labels_fixed <- list( label1.line1, paste0(label2.line1, "/n", label2.line2), paste0(label3.line1, "/n", label3.line2) ) library(ggplot2) library(scales) library(grid) # provides unit() function used to tweak spacing inside legend ggplot(data = mtcars, aes(x = mpg, y = wt, group = factor(cyl), colour = factor(cyl), shape = factor(cyl))) + geom_line() + geom_point(size = 3) + theme_bw() + scale_shape_manual(name = "Details", values = c(17, 21, 15), labels = labels_fixed) + scale_colour_manual(name = "Details", values = c("darkred", "darkgreen", "darkblue"), labels = labels_fixed) + theme(legend.key = element_blank(), legend.position = c(.65, .8), legend.background = element_rect(colour = "black"), legend.key.size = unit(2, "lines"), legend.text = element_text(size = 15))

Un problema menor es que el texto de la leyenda es mucho más pequeño con varias líneas, por lo que el espaciado entre las líneas de la leyenda tendrá que ser ajustado: pude modificar legend.key.size y legend.text para lograr un mejor resultado que el predeterminado, que es demasiado estrecho

También probé otra sugerencia relacionada con cat(strwrap("long label here"), sep = "/n") , pero no pude hacer que eso funcionara. También probé atop pero eso hace que cada línea sea demasiado pequeña y el anidado requerido para lograr el apilado deseado es tedioso.

¿Hay alguna manera de obtener letras griegas?

Aquí hay algunas sugerencias útiles que no pude hacer para trabajar, por ejemplo, la combinación de mtext() y bquote() se menciona en 1 y 2:

  1. Expresión y nueva línea en etiquetas de trama.
  2. Salto de línea en la expresión ()?
  3. Envolver leyenda horizontal a través de múltiples filas
  4. utilizando expresión (pegar (para insertar la notación matemática en una leyenda de ggplot)
  5. ggplot2 etiqueta de dos líneas con expresión
  6. Cómo anotar () ggplot con látex
  7. Letras griegas en ggplot anotar

La sugerencia de Baptiste fue acertada: Unicode ha recorrido un largo camino. Reemplace todas las instancias de gamma de arriba con /u03B3 y se mostrará como griego. ¡Increíble!

La impresión se puede hacer con el dispositivo cairo ( ref ):

library(Cairo) cairo_pdf(file = "ggplot-greek.pdf", width = 8, height = 5) ## ggplot object created here dev.off()

También funciona: ggsave("greek.pdf", device = cairo_pdf)

Aquí hay una selección de símbolos Unicode que he encontrado útiles:

"/U016B" = ū "/U016A" = Ū "/U00FB" = û "/U00DB" = Û "/U0233" = ȳ "/U0232" = Ȳ "/U0177" = ŷ "/U0176" = Ŷ "/U0113" = ē "/U0112" = Ē "/u00EA" = ê "/U00CA" = Ê "/U003BC/U2080" = μ₀ "/U003BC/U2081" = μ₁ "R/U00B2" = R² "/u221E" = ∞ "/u2248" = ≈ "/U2260" = ≠ "/u03C3//u221An" = σ/√n

Lamentablemente, no todos los caracteres especiales tienen un equivalente de Unicode. Por ejemplo, hay un unicode para y-hat pero no para x-hat. Es posible combinar la letra x con una barra Unicode, como en "x/u0305" = x̅ o "p/u0302" = p̂ , pero eso no parece imprimirse muy bien.

También tuve dificultades para imprimir unicode griego como etiquetas de eje, por lo que en estos casos recurrí a annotate() con la opción coord_cartesian(clip = "off") para garantizar que las etiquetas impresas debajo de los ejes no se recorten ("on") es el comportamiento de recorte por defecto).

A veces puedes usar directamente el personaje, por ejemplo:

myplot + labs(title = "±")

Cuando falla Unicode, puedes probar la expression() , por ejemplo, :

title = expression(paste("z = (", bar(x), "-/u03BC)/(/u03C3//u221An)", sep = "")) library(ggplot2) ggplot() + labs(title = title) + theme_bw()

Para mayor comodidad, a continuación copio los unicodes de algunas letras griegas de uso común. Se pueden encontrar muchos más Unicodes, por ejemplo, http://en.wikipedia.org/wiki/List_of_Unicode_characters

/u0391 Α Greek Capital Letter Alpha /u0392 Β Greek Capital Letter Beta /u0393 Γ Greek Capital Letter Gamma /u0394 Δ Greek Capital Letter Delta /u0395 Ε Greek Capital Letter Epsilon /u0396 Ζ Greek Capital Letter Zeta /u0397 Η Greek Capital Letter Eta /u0398 Θ Greek Capital Letter Theta /u0399 Ι Greek Capital Letter Iota /u039A Κ Greek Capital Letter Kappa /u039B Λ Greek Capital Letter Lambda /u039C Μ Greek Capital Letter Mu /u039D Ν Greek Capital Letter Nu /u039E Ξ Greek Capital Letter Xi /u039F Ο Greek Capital Letter Omicron /u03A0 Π Greek Capital Letter Pi /u03A1 Ρ Greek Capital Letter Rho /u03A3 Σ Greek Capital Letter Sigma /u03A4 Τ Greek Capital Letter Tau /u03A5 Υ Greek Capital Letter Upsilon /u03A6 Φ Greek Capital Letter Phi /u03A7 Χ Greek Capital Letter Chi /u03A8 Ψ Greek Capital Letter Psi /u03A9 Ω Greek Capital Letter Omega /u03B1 α Greek Small Letter alpha /u03B2 β Greek Small Letter beta /u03B3 γ Greek Small Letter gamma /u03B4 δ Greek Small Letter delta /u03B5 ε Greek Small Letter epsilon /u03B6 ζ Greek Small Letter zeta /u03B7 η Greek Small Letter eta /u03B8 θ Greek Small Letter theta /u03B9 ι Greek Small Letter iota /u03BA κ Greek Small Letter kappa /u03BB λ Greek Small Letter lambda /u03BC μ Greek Small Letter mu /u03BD ν Greek Small Letter nu /u03BE ξ Greek Small Letter xi /u03BF ο Greek Small Letter omicron /u03C0 π Greek Small Letter pi /u03C1 ρ Greek Small Letter rho /u03C2 ς Greek Small Letter final sigma /u03C3 σ Greek Small Letter sigma /u03C4 τ Greek Small Letter tau /u03C5 υ Greek Small Letter upsilon /u03C6 φ Greek Small Letter phi /u03C7 χ Greek Small Letter chi /u03C8 ψ Greek Small Letter psi /u03C9 ω Greek Small Letter omega

Información sobre qué fuentes usar con Unicode: https://en.wikipedia.org/wiki/List_of_typefaces#Unicode_fonts

Algunos símbolos de moneda:

# http://www.fileformat.info/info/unicode/category/Sc/list.htm Character Name Browser Image /u0024 DOLLAR SIGN $ /u00A2 CENT SIGN ¢ /u00A3 POUND SIGN £ /u00A4 CURRENCY SIGN ¤ /u00A5 YEN SIGN ¥ /u058F ARMENIAN DRAM SIGN /u060B AFGHANI SIGN ؋ /u09F2 BENGALI RUPEE MARK ৲ /u09F3 BENGALI RUPEE SIGN ৳ /u09FB BENGALI GANDA MARK /u0AF1 GUJARATI RUPEE SIGN ૱ /u0BF9 TAMIL RUPEE SIGN ௹ /u0E3F THAI CURRENCY SYMBOL BAHT ฿ /u17DB KHMER CURRENCY SYMBOL RIEL ៛ /u20A0 EURO-CURRENCY SIGN ₠ /u20A1 COLON SIGN ₡ /u20A2 CRUZEIRO SIGN ₢ /u20A3 FRENCH FRANC SIGN ₣ /u20A4 LIRA SIGN ₤ /u20A5 MILL SIGN ₥ /u20A6 NAIRA SIGN ₦ /u20A7 PESETA SIGN ₧ /u20A8 RUPEE SIGN ₨ /u20A9 WON SIGN ₩ /u20AA NEW SHEQEL SIGN ₪ /u20AB DONG SIGN ₫ /u20AC EURO SIGN € /u20AD KIP SIGN ₭ /u20AE TUGRIK SIGN ₮ /u20AF DRACHMA SIGN ₯ /u20B0 GERMAN PENNY SIGN ₰ /u20B1 PESO SIGN ₱ /u20B2 GUARANI SIGN ₲ /u20B3 AUSTRAL SIGN ₳ /u20B4 HRYVNIA SIGN ₴ /u20B5 CEDI SIGN ₵ /u20B6 LIVRE TOURNOIS SIGN ₶ /u20B7 SPESMILO SIGN ₷ /u20B8 TENGE SIGN ₸ /u20B9 INDIAN RUPEE SIGN ₹ /u20BA TURKISH LIRA SIGN ₺ /u20BB NORDIC MARK SIGN ₻ /u20BC MANAT SIGN ₼ /u20BD RUBLE SIGN ₽ /uA838 NORTH INDIC RUPEE MARK /uFDFC RIAL SIGN ﷼ /uFE69 SMALL DOLLAR SIGN ﹩ /uFF04 FULLWIDTH DOLLAR SIGN $ /uFFE0 FULLWIDTH CENT SIGN ¢ /uFFE1 FULLWIDTH POUND SIGN £ /uFFE5 FULLWIDTH YEN SIGN ¥ /uFFE6 FULLWIDTH WON SIGN