格式化ggplot字体大小以便在纸上打印

时间:2017-04-27 16:14:48

标签: r plot printing formatting cowplot

我的目标是在R中生成绘图,以便在信纸上打印得很好。以下是我的例子:

library(cowplot)

sample_df <- data.frame(col_1=c(1,2,3), col_2=c(6,7,8))
plot_1 <-ggplot(data=sample_df, aes(x = col_1, y =col_2, group=1))+
  geom_line()+ggtitle('Title 1')
plot_2 <-ggplot(data=sample_df, aes(x = col_1, y =col_2, group=1))+
  geom_line()+ggtitle('Title 2')

width_letter = 6
height_letter = width_letter*8.5/11

pdf('outpdf_1.pdf', width=width_letter, height=height_letter)
plot_grid(plot_1, plot_2, labels = "AUTO", ncol = 2, align = 'v', scale = 0.65) +   
  theme(plot.margin = unit(c(2,2,2,2), "cm")) 

dev.off()

它产生了丑陋的情节,我似乎无法找到一种很好地格式化绘图的方法,即调整轴和字体的大小。有什么建议吗?Image

1 个答案:

答案 0 :(得分:4)

library(cowplot)之后运行以下代码:theme_set(theme_cowplot(font_size=8))theme_cowplot()的默认字体大小(加载cowplot包时成为默认值的ggplot主题)为14.将此值更改为较低的值会减少绘图中的字体大小。创建每个绘图时,还可以使用theme语句更改各种绘图元素(例如,轴标签,绘图标题等)的单个字体大小。

以下是使用较小字体大小的PDF文件:

enter image description here

作为另一种选择,当您打开PDF设备时,您可以使用您创建的高度和宽度值的倍数。例如:pdf('outpdf_1.pdf', width=width_letter*2, height=height_letter*2)。这将导致文本相对于绘图区域较小,但绘图仍将在PDF文件的单个页面中呈现。我更喜欢第一种方法,但你也可以采用这种方法。

要回复您的评论:ggplot的默认主题为theme_grey(运行?theme_grey以查看此主题和其他可用主题的设置)。您可以看到每个主题都有一个base_size,其默认设置。标签和标题的所有字体大小都相对于base_size进行缩放。您可以通过在控制台中键入其名称来查看每个主题的所有各种设置。例如,运行theme_grey

当我第一次开始使用cowplot时,我注意到当你加载它时,它默认为一个新的主题,theme_cowplot。输入?theme_cowplot查看其帮助文件,输入theme_cowplot查看所有设置。您会注意到,与默认的ggplot主题不同,theme_cowplot会创建一个新参数font_size,该参数在ggplot的默认主题中扮演与base_size相同的角色。查看theme_cowplot的输出,您可以看到它以theme_grey(base_size=font_size, ...)开头。

更一般地说,您总是可以从主题,牛仔图,灰色,经典等开始,使用base_size(或font_size中的theme_cowplot)修改整体字体缩放,然后使用theme语句更改单个字体。您还可以将这些更改存储在新主题对象中,然后可以将其应用于任何绘图,这样您就不必为每个新绘图重复所有主题元素。还有一个ggthemes包,其中包含其他预先打包的主题。