Разделение осей меток с помощью выражений - PullRequest
2 голосов
/ 24 января 2012

У меня есть график с длинной меткой, содержащей выражение, и я хочу разбить его на две строки.
При добавлении "\ n" внутри выражения результат не соответствует ожидаемому.

ylabel <- expression("A very long label with text and \n 
expression"*(alpha+beta) [ij]*"  A very long label with text and expression")
curve(x^3 - 3*x, -2, 2, xlab=xlabel)

Любая помощь будет оценена. Спасибо

Ответы [ 3 ]

7 голосов
/ 24 января 2012

Вот еще одно решение, опирающееся на atop, как это сделал @AndresT в своем редактировании.Обратите внимание, что мы не можем использовать управляющий символ, такой как \n, в выражении, которое объясняет, почему использование чего-то вроде expression(paste("...\n", alpha[i], "....")) не приведет к желаемому результату.

xlabel <- expression(atop("A very long label with text and expression", 
                          paste((alpha+beta)[ij], "   A very long label ...")))
curve(x^3 - 3*x, -2, 2, sub=xlabel, xlab="")

Обратите внимание, что я использовал sub вместо xlab, чтобы избежать столкновения с отметками x.

enter image description here

4 голосов
/ 24 января 2012
plot(1:10, ann = FALSE)
 mtext(side = 2, text = "Y Axis", line = 3)
 mtext(side = 2, text = "and something extra", line = 2)

enter image description here

Для ggplot2:

set.seed(124)
data1 = data.frame(x=1:10,y=rnorm(10,1))

colnames(data1) = c("X", "Y") 
theme = theme_set(theme_bw()) 

# atop is the function to use in order to get two lines  

 xlab = expression(atop(paste("x Axis"),
            "More text"))
 ylab = expression(atop(paste("y Axis"),
                "Two lines"))




  ggplot(data1, aes(x = X, y = Y))+
            geom_point(shape = 1, color ="black") +
                 xlab(xlab) +  
                 ylab(ylab)


#And adjust the margins with opts.
0 голосов
/ 20 сентября 2014

пример строки в ggplot2:

ylab(expression(atop(paste(italic("Saxifraga tridactylites")), 
"individuals per plot")))+
...