r - ggplot边距 - 改变到轴的距离

标签 r plot ggplot2 figure

我正在从基本的 R 绘图工具切换到 ggplot2 并且正在努力解决一个问题。

在基本 R 中,您可以通过设置边距来控制与四个轴(或“框”)中的每一个轴的距离。产生的边距是固定的,不取决于您绘制的内容。尽管刻度标签和轴标签的大小不同,这些使我可以为我的论文生成绘图区域大小完全相同的绘图。

在 ggplot 中,我遇到了这个(最小工作示例):

library(ggplot2)
dat = data.frame(x = 1:5, y = 1e-5* (1:5) ^ 2)
p = ggplot(dat, aes(x, y)) + geom_point() + geom_line()

print(p)
print(p + scale_y_log10())

First figure
Second figure

图左侧的黑色箭头显示了我得到的实际边距之间的差异。轴标签( y )保持原位,而 y 的位置-axis 根据刻度标签(文本表示)的大小而变化。可以通过更改 axis.text.y 进一步升级例如增加size .

我想要的是无论绘制什么刻度标签都能够控制实际边距 - 在这种情况下,我可以获得不同数据集的相同大小的数字。

最佳答案

尽管 ggplot2 中有许多主题选项,但似乎没有为轴设置固定边距空间的选项(或者如果有的话它隐藏得很好)。 cowplot包有一个 align_plots 函数,它可以对齐绘图列表中的一个或两个轴。 align_plots返回一个列表,其中的每个组件都是原始图,但指定的轴对齐。我正在使用 gridExtra 中的 grid.arrange 函数包输出两个图,以便您可以看到对齐的工作方式:

library(ggplot2)
dat = data.frame(x = 1:5, y = 1e-5* (1:5) ^ 2)
p = ggplot(dat, aes(x, y)) + geom_point() + geom_line()

print(p)

p1 = p + scale_y_log10()
print(p1)

library(cowplot)
library(gridExtra)
p2 = align_plots(p, p1, align = "hv")
grid.arrange(p2[[1]], p2[[2]])

enter image description here

这是两个原始图的输出方式:
grid.arrange(p, p1)

enter image description here

关于r - ggplot边距 - 改变到轴的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48592613/

相关文章:

r - 为什么R的热图不能始终如一地作用于颜色单元?

r - 使用外部表计算字符串长度

matlab - 将一组 (X, Y, Z) 点绘制为一个漂亮的封闭对象?

r - ggplot2 geom_bar : Centering bars

r - Hmisc : How to group column variables with latex()?

r - 使用 Shiny 中的 slider 更改图像大小

plot - 带有误差条的 gnuplot 绘图

r - 生成堆积条形图

r - 缩放 X 轴错误并需要帮助将 "%"符号添加到 ggplot R 中的 X 轴

r - 如果使用scale_x_datetime,时间序列图会偏移2小时