2016-05-05 4 views
1

Я искал функцию обертки в ggplot2, которая может помочь мне поместить текст легенды в определенную прямоугольную область. Пока я его не нашел. Вот мой случай:Текст легенды обложки, содержащий выражение в ggplot2

library (ggplot2) 
p = ggplot (mtcars, aes (x = mpg, y= cyl,color = factor (cyl))) 
p + geom_point() 
z = unique (factor (mtcars$cyl)) 
p + geom_point() + scale_color_manual(name="legend title", breaks = z, 
            labels = c (expression(a + b + c + d + e + f + g + h + i), expression(x) , expression(y)), 
            values = c("red","blue","green")) 

То, что я хочу, чтобы иметь длинное выражение, завернутое в пределах ширины пяти символов.

Есть ли какая-либо функция, которая может автоматически обертывать текст каждой легенды в определенной ширине текста, и мне интересно, применимо ли это для выражений.

ответ

0

Следующее, используя str_wrap от stringr, должно работать на вас. Он обертывает, используя значение 5 по запросу, но не выглядит так здорово.

library(ggplot2) 
library(stringr) 
p = ggplot (mtcars, aes (x = mpg, y= cyl,color = factor (cyl))) 
p + geom_point() 
z = unique (factor (mtcars$cyl)) 
p + geom_point() + scale_color_manual(name="legend title", breaks = z, 
             labels = c(str_wrap(expression(a + b + c + d + e + f + g + h + i), 5), expression(x) , expression(y)), 
             values = c("red","blue","green")) 

enter image description here

+0

@stevebI попробовал это. Но как только я делаю выражение более сложным (например, ввод индексов и надстрочный индекс), он, похоже, не работает. Пусть –

+0

@satyanarayanrao Можете ли вы включить код, который у вас есть для супер и индексов. Я могу посмотреть на тех, но сосредоточив внимание на том, что ваш конкретный случай станет хорошим местом для начала. – steveb

+0

Вот он: str = paste ("P [\" "," a "," \ "]^m * Q *", "P [\" "," b "," \ "]^m * Q ", sep =" ") В ggplot: labels = c (str_wrap (parse (text = str), 15), выражение (x), выражение (y)) Здесь выражение выражается не так, как ожидалось , На самом деле у меня длинная строка такого выражения, и я хочу ее обернуть. –

Смежные вопросы