如果我的轴标题被剪裁,我应该在ggplot中调整哪些参数?

时间:2016-04-07 15:02:13

标签: r graphics ggplot2

这里有一个相当具体的问题,但它可能有助于其他有类似问题的人。

我有一些简单的数据:

Y = c(0.02, 0.03, 0.03, 0.04, 0.05, 0.06, 0.08, 0.09, 0.10, 0.13, 0.17, 0.17, 0.21, 0.22,   
0.35, 0.47, 0.51, 0.53, 0.54, 0.65, 0.78)  
X = c(0.45, 0.26, 0.35, 0.22, 0.37, 0.09, 0.27, 0.51, 0.39, 0.37, 0.37, 0.27, 0.51, 0.36, 
0.44, 0.49, 0.63, 0.49, 0.71, 0.56, 0.67)
self1 = data.frame(X, Y)

我也有一个简单的自定义ggplot主题:

plot.theme = theme(axis.text = element_text(size=26), axis.title=element_text(size=28),  
plot.title=element_text(size=36, margin=margin(0,0,20,0)), panel.grid.minor
= element_blank(), plot.margin=unit(c(0.1,0.25,0.5,0.85), "cm"), axis.title.y = 
element_text(margin=margin(0,15,0,0)), panel.border = element_rect(color="black", fill=NA,
size=2), axis.ticks = element_blank(), legend.title = element_text(size=26), legend.text = 
element_text(size=18))

当我用边缘直方图绘制数据的散点图时:

bing = ggplot(self1, aes(x=X, y=Y)) + geom_point(size=3) + 
         geom_smooth(method = "lm", se=F, color="black") + 
         plot.theme +
         ylab("Observed selfing rate") + 
         xlab("Observed crossing rate") + 
         geom_vline(xintercept = 0.42, linetype="longdash") + 
         geom_hline(yintercept = 0.25, linetype="longdash")   

ggExtra::ggMarginal(bing, type = "histogram", bins=6, size=10)

除了“观察到的穿越率”中的“g”在图表的底部被切断之外,一切看起来都很棒。我已经尝试了我能想到的每个主题参数的烦躁,我也尝试调整ggMarginal的几个参数,但我还没有找到我需要更改的一个以使所有内容保持在情节区。谁能帮我吗?我怀疑这个问题最终取决于ggMarginal自动调整各种主题参数大小的方式,但这只是一种预感。

2 个答案:

答案 0 :(得分:2)

如果g是你的情节,你可以在绘制它之前g$vp = grid::viewport(height=0.9, width=0.9)(print或grid.draw)

答案 1 :(得分:1)

我还没有办法改变ggMarginal返回的对象的绘图边距。因此,在有人提供更好的解决方案之前,您可以修改ggMarginal函数本身的代码。方法如下:

  1. 在控制台中输入ggMarginal。这将打印ggMarginal的代码。将此代码粘贴到脚本窗口中。为此函数指定一个新名称,例如my_ggMarginal = [all the ggMarginal code you just pasted in]

  2. 在此函数中找到以下行:

    p <- p + ggplot2::theme(plot.margin = grid::unit(c(0, 0, 
                                               0, 0), "null"))
    

    并将其更改为:

    p <- p + ggplot2::theme(plot.margin = grid::unit(c(0, 0, 
                                               1, 0), "lines"))
    
  3. 运行您刚创建的新功能的代码,以便{?1}}在您当前的工作区中可用。

  4. my_ggMarginal上运行新功能:

    bing