r - 跨多行包装水平图例

标签 r ggplot2 legend

假设我有如下数据:

    lab <- "A really really long string!"
    dat <- data.frame(grp = paste(1:6,lab),x=1:6,y=runif(6))

当用这么长的字符串绘制图例时,有时要让图例很好地适应可能是一个挑战。如果必须的话,我总是可以缩写字符串以缩短它们,但我想知道是否有可能(最有可能使用一些 grid 魔法)跨多行或多列“包装”一个图例。例如,假设我将图例水平放置在底部:
    ggplot(dat,aes(x=x,y=y,colour=grp)) + geom_point() + 
        opts(legend.position="bottom",legend.direction="horizontal")

是否可以将此图例显示为两排三排,而不是一排六排?

最佳答案

要包裹长字符串,请使用 strwrap .

lipsum <- "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur ullamcorper tellus vitae libero placerat aliquet egestas tortor semper. Maecenas pellentesque euismod tristique. Donec semper interdum magna, commodo vehicula ante hendrerit vitae. Maecenas at diam sollicitudin magna mollis lobortis. In nibh elit, tincidunt eu lobortis ac, molestie a felis. Proin turpis leo, iaculis non commodo quis, venenatis at justo. Duis in magna vel erat fringilla gravida quis non nisl. Nunc lacus magna, varius eu luctus vel, luctus tristique sapien. Suspendisse mi dolor, vestibulum at facilisis elementum, lacinia vitae metus. Etiam ut nisl urna, vel tempus mi. In hac habitasse platea dictumst. Quisque pretium volutpat felis, nec tempor diam faucibus at. Praesent volutpat posuere sapien, eu vulputate risus molestie vitae. Proin iaculis quam non leo porttitor hendrerit."

strwrap(lipsum)
cat(strwrap(lipsum), sep = "\n")
# Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur ullamcorper tellus
# vitae libero placerat aliquet egestas tortor semper. Maecenas pellentesque euismod
# tristique. Donec semper interdum magna, commodo vehicula ante hendrerit vitae. Maecenas
# at diam sollicitudin magna mollis lobortis. In nibh elit, tincidunt eu lobortis ac,
# molestie a felis. Proin turpis leo, iaculis non commodo quis, venenatis at justo. Duis
# in magna vel erat fringilla gravida quis non nisl. Nunc lacus magna, varius eu luctus
# vel, luctus tristique sapien. Suspendisse mi dolor, vestibulum at facilisis elementum,
# lacinia vitae metus. Etiam ut nisl urna, vel tempus mi. In hac habitasse platea
# dictumst. Quisque pretium volutpat felis, nec tempor diam faucibus at. Praesent
# volutpat posuere sapien, eu vulputate risus molestie vitae. Proin iaculis quam non leo
# porttitor hendrerit.

关于r - 跨多行包装水平图例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432646/

相关文章:

r - 如何在ggplot中为垂直线添加图例?

r - 如何将一个带有下标的特定图例标签稍微向下移动?

r - 在 Shiny 中使用过滤数据表

r - 如何在 R Studio IDE 中前进到下一次出现的变量

python - 如何像在 R 中的 ggplot2 中一样在 Python 中的 matplotlib 中创建构面?

r - 我在我的散点图中发现了一条意想不到的线,我怎样才能提取线附近的所有数据以供进一步分析?

r - 使 `subset()` 在函数中工作

r - 从具有平均值的计算值分组 geom_boxplot

r - geom_text 和暂停动画的问题

r - 一根图例行中有多个希腊字母