【问题标题】:Figure size in R MarkdownR Markdown 中的图形大小
【发布时间】:2016-04-04 18:14:58
【问题描述】:

我试图仔细而彻底地阅读网上有关如何在 R Markdown 中格式化数字的各种内容。它们绘制正确,但似乎无法控制它们的大小。

首先,有一些基础知识,比如:

```{r Fig1, echo=FALSE, fig.height=5, fig.width=15}
    x1 = rnorm(100)
    x2 = runif(100)
    x3 = rbeta(100, 1, 1,)
    par(mfrow=c(1,3), mar=c(4,4,4,1), oma=c(0.5,0.5,0.5,0))
    qqnorm(x1)
    qqnorm(x2)
    qqnorm(x3)
```

然后,我尝试更多:

```{r Fig1b, echo=FALSE, fig.height=5, fig.width=15, out.retina=1}

```

如果我尝试匹配另一个简单图形的大小,差异非常明显。例如:

```{r Fig2, echo=FALSE, fig.height=5, fig.width=5, retina=1}
    par(mfrow=c(1,1), mar=c(4,4,4,1), oma=c(0.5,0.5,0.5,0))
    qqnorm(x1)
```

我想知道对此能做些什么——即,如何使所有图形的大小相等?特别是图1、图1b等图形缩小后,如何调整图2中简单图形的大小?

谢谢!

【问题讨论】:

  • 如果您觉得我的回答有帮助,您会“接受”吗?如果没有,你能澄清你的问题吗?
  • 这是一个旧的但是,你试过fig.asp吗?例如 fig.asp = .62

标签: r r-markdown figure


【解决方案1】:

在我看来,您希望 Fig2 的大小与 Fig1 中的单个面板相同。如果您真的希望它们具有相同的大小,我建议您使用相同的 fig.width 和相同的 mfrow 值。

```{r Fig1, echo=TRUE, fig.height=5, fig.width=15}
x1 = rnorm(100)
x2 = runif(100)
x3 = rbeta(100, 1, 1,)
par(mfrow=c(1,3), mar=c(4,4,4,1), oma=c(0.5,0.5,0.5,0))
qqnorm(x1)
qqnorm(x2)
qqnorm(x3)
```

```{r Fig2, echo=TRUE, fig.height=5, fig.width=15}
par(mfrow=c(1,3), mar=c(4,4,4,1), oma=c(0.5,0.5,0.5,0)) # same, could omit
plot.new()   # empty plot
qqnorm(x1)
plot.new()   # empty plot
```

如果您的意思是希望 Fig2 在呈现的文档上占用与 Fig1 相同的空间,请尝试在 par(op) 重置绘图参数的位置。

```{r Fig1, echo=TRUE, fig.height=5, fig.width=15}
x1 = rnorm(100)
x2 = runif(100)
x3 = rbeta(100, 1, 1,)
op <- par(mfrow=c(1,3), mar=c(4,4,4,1), oma=c(0.5,0.5,0.5,0))
qqnorm(x1)
qqnorm(x2)
qqnorm(x3)
par(op)
```

```{r Fig2, echo=TRUE, fig.height=5, fig.width=15}
op <- par(mfrow=c(1,1), mar=c(4,4,4,1), oma=c(0.5,0.5,0.5,0))
qqnorm(x1)
par(op)
```

【讨论】:

  • 是的,这是一种解决方案,适用于所有实际目的。但它告诉我,我们对 Rmarkdown 中的 R-sn-ps 没有任何控制权,但我们必须使用一些 hack 来制作我们想要的东西。为什么 fig.height、fig.width、out.retina(或 out.width)等参数的正确组合对我们不起作用?
猜你喜欢
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多