【问题标题】:R Markdown - Description next to plot in PDF outputR Markdown - PDF 输出中绘图旁边的说明
【发布时间】:2021-12-21 07:58:21
【问题描述】:

我想将页面左侧的几个图与右侧的描述对齐。我的理想输出是这样的,一页最多有 5 个图:

这些图是动态的,并且基于闪亮应用中的用户输入。这是我如何生成绘图的示例(目前使用 fsmb 作为radarchart 函数,但考虑使用 ggplot2 代替)。

library(fmsb)
library(knitr)

opts_chunk$set(echo=FALSE)

df <- data.frame(
  row.names=c("Max", "Min", "Data"),
  rbind(
    rep(5, 6),
    rep(1, 6),
    sample(1:5, 6, replace=TRUE)
  )
)

radarchart(
  df,
  vlabels=c(1,2,3,4,5,6), 
  caxislabels=c(1,2,3,4,5)
)

图表很好,但我正在努力的地方是对齐。我试图将图表另存为 png 并将其添加到表格中,但它根本没有按我的意愿工作。

png("plot1.png", width=400, height=400)
radarchart(
  df,
  vlabels=c(1,2,3,4,5,6), 
  caxislabels=c(1,2,3,4,5)
)
dev.off()

dat <- data.frame(
  Figure=c("1"),
  Description=c("Short description"))
dat$Figure <- c(sprintf("![](%s){width=200px}", "plot1.png"))
kable(dat)

我希望能够在不必先保存 png 的情况下排列图形,但这是迄今为止我设法达到所需输出的最接近的值。关于如何实现这一点的任何想法?

【问题讨论】:

    标签: r pdf r-markdown


    【解决方案1】:

    也许我可以帮助你。我使用您示例中的数据并执行此操作:

    op <- par(mar=c(1, 2, 2, 1),mfrow=c(2, 2))
    radarchart(
        df,
        vlabels=c(1,2,3,4,5,6), 
        caxislabels=c(1,2,3,4,5)
    )
    plot(NA, xlim = c(-5, 5), ylim=c(-5,5), axes = F, ann = F)
    text(x = 0, y = 0, "good plot\nanother line\ngood plot", cex = 2)
    radarchart(
        df,
        vlabels=c(1,2,3,4,5,6), 
        caxislabels=c(1,2,3,4,5)
    )
    plot(NA, xlim = c(-5, 5), ylim=c(-5,5), axes = F, ann = F)
    text(x = 0, y = 0, "your plot description\nmay be on 2 lines", cex = 2)
    par(op)
    

    结果:

    【讨论】:

    • 这太完美了!我是 R 新手,没有意识到我可以简单地将文本添加到空白图中。这使我找到了 layout(),我用它来使文​​本跨越 2 列,而这个数字只有 1。非常感谢 :)
    猜你喜欢
    • 2018-10-08
    • 2019-03-09
    • 2016-08-30
    • 2014-09-30
    • 2017-10-30
    • 2018-10-07
    • 2021-04-21
    • 2018-11-19
    • 1970-01-01
    相关资源
    最近更新 更多