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)
我可以设置绘图标题以包围并缩小文本以适应情节吗?
我正在寻找一种方法来动态地将条带标签文本包装在一个facet_wrap或facet_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)