Nuestro grupo redactor ha estado mucho tiempo buscando la resolución a tu interrogante, te ofrecemos la respuesta por esto nuestro deseo es que resulte de mucha ayuda.
Solución:
En este momento, esta página es el principal resultado de búsqueda en Google para ggplot anotar cursiva. Para el beneficio de aquellos que simplemente quieren poner en cursiva una anotación completa, estoy escribiendo esta publicación. Usar anotaciones fontface
opción. Ejemplo:
seq(0,3.14,0.01)
qplot(x, sin(x)) + # works the same for qplot or ggplot
annotate(geom = 'text',
x = 1.5,
y = 0.5,
hjust = 0.5,
label = 'Hello, World',
fontface = 'italic')
Usar parse=TRUE
y suministrar un string formateado según ?plotmath
.
p <- ggplot(d, aes(i, value, linetype=variable)) +
geom_hline(yintercept=700^2) +
geom_line() +
scale_linetype_manual(values=c(2,1)) +
scale_x_continuous(breaks=(0:20)*365/7, labels=0:20) +
scale_y_sqrt() +
annotate('text', 8*365/7, 1e3,
label="P(italic(i))==8~italic(i)", parse=TRUE,
hjust=1, size=3) +
annotate('text', 8*365/7, 2.5e5,
label="A(italic(i))==1+4~italic(i)(italic(i)-1)", parse=TRUE,
hjust=1, size=3)
La respuesta mejor calificada está bien, pero en un escenario más complejo con saltos de línea no funcionó para mí, así que simplemente usé caracteres en cursiva Unicode en su lugar. Para tu ejemplo:
library(Unicode)
italic_i <- u_char_inspect(u_char_from_name("MATHEMATICAL ITALIC SMALL I"))["Char"]
label1 <- paste("P(", italic_i, ")=8", italic_i, sep="")
label2 <- paste("A(", italic_i, ")=1+4", italic_i, "(", italic_i, "-1)", sep="")
i <- 1:(8*365/7)
d <- data.frame(i=i,p=p(i),a=sapply(i,a))
d <- melt(d, id.vars='i')
p <- ggplot(d, aes(i, value, linetype=variable)) +
geom_hline(yintercept=700^2) +
geom_line() +
scale_linetype_manual(values=c(2,1)) +
#geom_point() +
scale_x_continuous(breaks=(0:20)*365/7, labels=0:20) +
#scale_y_continuous(breaks=c(0,700^2), labels=c(0,expression(L^2)))
scale_y_sqrt() +
#scale_y_log10() +
annotate('text', 8*365/7, 1e3, label=label1, hjust=1, size=3) +
annotate('text', 8*365/7, 2.5e5, label=label2, hjust=1, size=3)
print(p + theme_classic())
Editar: acabo de darme cuenta de que guardar un pdf con pdf() no representa Unicode correctamente, pero simplemente puede usar cairo_pdf() en su lugar, que funciona bien (ver: Caracteres Unicode en ggplot2 PDF Output)