我对R / ggplot2相当新,并且仍然在学习。希望我不会错过任何明显的东西!
我正在尝试使用ggplot2创建几个不同的图,我使用cowplot包中的函数plot_grid进行布局,以使图可以并排显示并添加图表编号和标题。问题是,如果生成的图表显示在一个小窗口中,或者我有许多彼此相邻的图表,那么这两个图表的标题有时会重叠。为了解决这个问题,我尝试使用another thread中找到的代码在我太长的标题中自动插入换行符,因为我希望标题的文本大小保持不变。
使用下面的代码,我可以轻松地自动插入必要的换行符,使我的标题具有特定的宽度,但问题是我总是需要输入宽度的数值。根据我插入的图的数量,这个值当然会改变。我当然可以通过我的代码并手动设置每组图的宽度,直到它是正确的值,但我希望自动化这个过程,以便自动调整标题宽度以匹配x轴的宽度。无论如何在R?
中实现这一点 #automatically line break and add titles
myplot_theme1 = function (plot, x.title = NULL, y.title = NULL, plot.title = NULL) {
plot +
labs(title = paste(strwrap(plot.title, width = 50), collapse = "\n"),
x = x.title,
y = y.title)
}
# generate an example plot
data_plot <- data.frame(x = rnorm(1000), y = rnorm (1000))
plot1 <- ggplot(data_plot, aes(x = x, y = y)) + geom_point()
title <- "This is a title that is very long and does not display nicely"
myplot_theme1(plot1, plot.title = title)
我尝试过搜索,但我找不到任何解决方案似乎可以解决我想要的问题。 only solution我发现看起来很有前途的是基于包gridDebug。我的操作系统似乎不再支持这个软件包(macOS Sierra版本10.12.6),因为当我尝试安装它时,我收到以下错误消息:
install.packages中的警告:依赖项'graph','Rgraphviz'不可用
在CRAN package documentation上,它声明该软件包甚至不适用于我以前的操作系统macOS El Capitan。如果有人知道是什么导致了这个问题,那么我可以尝试上面的线程中的解决方案当然也会很棒。
答案 0 :(得分:0)
一个想法(但可能不是理想的解决方案)是根据标题中的字符数调整文本大小。您可以使用ggplot
调整theme
属性,在这种情况下,您需要调整plot.title
(主题属性,而不是您的变量)。 plot.title
包含元素size
和横向对齐hjust
,后者在[0,1]范围内。
# generate an example plot
data_plot <- data.frame(x = rnorm(1000), y = rnorm (1000))
plot1 <- ggplot(data_plot, aes(x = x, y = y)) + geom_point()
title1 <- "This is a title that is very long and does not display nicely"
title2 <- "I'm an even longer sentence just test me out and see if I display the way you want or you'll be sorry"
myplot_theme1 = function (plot, x.title = NULL, y.title = NULL, plot.title = NULL) {
plot +
labs(title = plot.title,
x = x.title,
y = y.title) +
theme(plot.title = element_text(size=800/nchar(plot.title), hjust=0.5)) # 800 is arbitrarily chosen
}
myplot_theme1(plot1, plot.title = title1)
myplot_theme1(plot1, plot.title = title2)