gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 03:01:44 24 4
gpt4 key购买 nike

我正在从基本的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com