R 包含表达式的换行图例文本

R 包含表达式的换行图例文本,r,ggplot2,legend,R,Ggplot2,Legend,我一直在寻找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 titl

我一直在寻找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") )
我想要的是将长表达式包装在五个字符的宽度内


是否有任何函数可以自动将每个图例键的文本按定义的文本宽度进行换行,我想知道这是否也适用于表达式。

下面使用
stru wrap
from
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") )

@stevebI试过这个。但一旦我使表达式变得更复杂(比如引入下标和上标),它似乎就不起作用了。Let@satyanarayanrao你能包括你的超级和下标代码吗。我可以看看这些,但关注你的具体情况将是一个很好的开始。这里是:在ggplot:labels=c(stru-wrap(parse(text=str),15),expression(x),expression(y))中的str=paste(“P[\”,“a”,“P[\”,“b”,““,“\”)^mQ”,“P[\”,“b”,““,“\”]^m*Q”,sep=“”)这里的表达式没有如预期的那样出现。事实上,我有一长串这样的表达式,我想把它包装起来。一个可能的替代方法是使用下面的
+主题(legend.position=“bottom”)+guides(color=guide\u legend(nrow=3))
将图例放在底部。谢谢,史蒂文,最后我使用了Inkscape。我发现用矩阵的形式来拟合它们太难了。