相关疑难解决方法(0)

R:ggplot2,我可以将绘图标题设置为环绕并缩小文本以适合绘图吗?

library(ggplot2)

my_title = "This is a really long title of a plot that I want to nicely wrap \n and fit onto the plot without having to manually add the backslash n, but at the moment it does not"

r <- ggplot(data = cars, aes(x = speed, y = dist))
r + geom_smooth() + #(left) 
opts(title = my_title)
Run Code Online (Sandbox Code Playgroud)

我可以设置绘图标题以包围并缩小文本以适应情节吗?

r title word-wrap ggplot2

26
推荐指数
3
解决办法
2万
查看次数

如何使用ggplot2动态包装facet标签

我正在寻找一种方法来动态地将条带标签文本包装在一个facet_wrapfacet_grid调用中.我找到了一种方法来实现这一目的strwrap,但是我需要指定一个width输出才能按需运行.通常预先不知道小平面的数量,因此该方法需要我width基于数据集和绘图大小迭代地调整参数.是否可以动态指定包装函数的宽度,或者是否有其他选项可用于标记可以更好地工作的方面?

library(ggplot2)
df = expand.grid(group=paste(c("Very Very Very Long Group Name "), 1:9),
                 x=rnorm(5), y=rnorm(5), stringsAsFactors=FALSE)

df$groupwrap = unlist(lapply(strwrap(df$group, width=30, simplify=FALSE), paste, 
                             collapse="\n"))
p = ggplot(df) +
  geom_point(aes(x=x, y=y)) +
  facet_wrap(~groupwrap)
Run Code Online (Sandbox Code Playgroud)

更新:基于@baptiste和@thunk提供的指导,我想出了下面的选项.目前,它仅适用于指定的字体系列和大小,但理想情况下,应该也可以使用默认theme设置.也许有ggplot2经验的人有一些改进的建议.

library('grid')
grobs <- ggplotGrob(p)

sum = sum(sapply(grobs$width, function(x) convertWidth(x, "in")))
panels_width = par("din")[1] - sum  # inches

df$group = as.factor(df$group)
npanels = nlevels(df$group)
if (class(p$facet)[1] == "wrap") {
  cols = n2mfrow(npanels)[1]
} else {
  cols …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

26
推荐指数
2
解决办法
1万
查看次数

标签 统计

ggplot2 ×2

r ×2

title ×1

word-wrap ×1