мое лучшее предположение - определить собственный текст theme_text для метки полосы,
theme_splittext = function (...)
{
function(label, ...) {
splitlab = paste(strwrap(label), collapse="\n")
textGrob(splitlab, 0.5, 0.5, ...)
}
}
p + opts(strip.text.x = theme_splittext())
быстрое тестирование показывает, что ширина каждой линии не обязательно вписывается в фасетную полосу; лучшим подходом может быть использование splitTextGrob из RGraphics, где разбиение выполняется во время рисования, чтобы поместиться в текущий видовой экран,
theme_splittext2 = function (...)
{
require(RGraphics)
function(label, ...) {
splitTextGrob(label, ..., vp=viewport(height=unit(2, "lines")))
}
}
heightDetails.splitText = function(x) unit(2, "lines")
Проблема в том, что ggplot ожидает, что гроб узнает его размер, в то время как гроб ожидает область просмотра с определенными размерами ... Обычно это требует некоторой предварительной оценки, но на практике я не думаю, что вам нужно больше чем две строки текста.