gpt4 book ai didi

r - 如何防止在 R 中调整字体、绘图对象等的大小?

转载 作者:行者123 更新时间:2023-12-04 11:34:18 25 4
gpt4 key购买 nike

我想在同一图像中有多个图,并且我想根据图像有不同数量的图。准确地说,我首先创建了一个 1x2 的图矩阵,然后是一个 3x2 的图矩阵。我想为这两个图像使用相同的基本设置 - 特别是相同的字体大小,因为这是用于纸张并且字体大小必须至少为 6 pt 用于绘图。

为了实现这一点,我为 R 编写了以下代码:

filename = "test.png"
font.pt = 6 # font size in pts (1/72 inches)
total.w = 3 # total width in inches
plot.ar = 4/3 # aspect ratio for single plot
mat.col = 2 # number of columns
mat.row = 1 # number of rows
dpi = 300

plot.mar = c(3, 3, 1, 2) + 0.1
plot.mgp = c(2, 1, 0)
plot.w = total.w / mat.col - 0.2 * plot.mar[2] - 0.2 * plot.mar[4]
plot.h = plot.w / plot.ar
total.h = (plot.h + 0.2 * plot.mar[1] + 0.2 * plot.mar[3]) * mat.row

png(filename, width = total.w, height = total.h, res = dpi * 12 / font.pt, units = "in")

par(mfrow = c(mat.row, mat.col), mai = 0.2 * plot.mar, mgp = plot.mgp)

plot(1, 1, axes = T, typ = 'p', pch = 20, xlab = "Y Test", ylab = "X Test")

dev.off()

如您所见,我将总宽度设置为 3 英寸,然后计算图像的总高度,以便图的纵横比正确。字体大小仅以一个因子改变分辨率。
无论如何,现在的问题是,当我从 mat.row = 1 开始时,字体大小发生了显着变化。至 mat.row = 3 .其他事情也发生了变化,例如轴和边距的标签,即使我之前专门设置了英寸。看一看:

设置 3 行时(裁剪图像):

3 rows

当仅设置 1 行时(裁剪图像):

1 row

我怎样才能防止这种情况?在我看来,我做了我能做的一切。这花了我很长时间,所以我想让它工作而不是切换到 gglplot并从头开始学习一切。它也足够小,我真的希望我只是错过了一些非常明显的东西。

最佳答案

?par我们可以找:

In a layout with exactly two rows and columns the base value of "cex" is reduced by a factor of 0.83: if there are three or more of either rows or columns, the reduction factor is 0.66.



因此,当您更改 mfrow从 (2, 1) 到 (2, 3) 的值 cex值从 0.83 变为 0.66。 cex影响字体大小和文本行高。

因此,您可以手动指定 cex您的地块的值(value)。
par(mfrow = c(mat.row, mat.col), mai = 0.2 * plot.mar, mgp = plot.mgp, cex = 1)

希望,这是你需要的。

mat.row = 1 绘图(裁剪):
mat.row = 1 (cropped)
并为 mat.row = 3 绘图(裁剪):
mat.row = 3 (cropped)

关于r - 如何防止在 R 中调整字体、绘图对象等的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41431410/

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