我正在使用 ggplot 绘制一些数据图表,我注意到图例文本很长并且不适合窗口。
+ opts(legend.position = 'bottom', legend.direction = 'horizontal', size=0.1) +
guides(colour = guide_legend(nrow = 3), size=1)
ggplot 中是否有选项可以包装图例文本以适应窗口。
据我所知,因此我采用了一种解决方法strwidth()
,它可以计算基本图形中文本的宽度。
title <- "This is a really excessively wide title for a plot, especially since it probably won't fit"
用于par("din")
获取设备的宽度,并strwidth()
计算文本大小:
par("din")[1]
[1] 8.819444
strwidth(title, units="inches")
[1] 11.47222
在函数和绘图中使用它:
wrapTitle <- function(x, width=par("din")[1]){
xx <- strwrap(x, width=0.8 * nchar(x) * width / strwidth(x, units="inches"))
paste(xx, collapse="\n")
}
wrapTitle(title)
[1] "This is a really excessively wide title for a plot, especially since it\nprobably won't fit, meaning we somehow have to wrap it"
剧情:
ggplot(mtcars, aes(wt, mpg)) + geom_point() + opts(title=wrapTitle(title))
如果要将绘图保存到文件,则可以替换par("din")
为实际保存的绘图尺寸。