【问题标题】:Create a document with multiple sections each containing a plot创建一个包含多个部分的文档,每个部分都包含一个图
【发布时间】:2019-06-28 12:35:26
【问题描述】:

我有这个数据框

sales <-
  data.frame(
    "month" = c("2018-01-01", "2018-01-01", "2018-02-01", "2018-02-01"), 
    "type" = c("us", "rest", "us", "rest"),
    "net_inc" = c(500, 600, 800, 900),
    stringsAsFactors = F
    )

我什至根据这些数据创建了一些图表

ggplot(sales, aes(x=month, y=type, fill=type)) +
  geom_bar(stat = "identity", position = "dodge")

但现在我想为每个月准备带有单独图表的降价文档,除了手动过滤每个月然后从过滤后的数据创建图表之外,我不知道该怎么做。

所以我的问题是如何从销售数据框实现这一点:

  1. markdown 中有子标题 (## 2018-01)
  2. 在我的 df 中为每个月创建图(请注意,在我的数据框中,数据从 2000 年开始到当前日期)

【问题讨论】:

  • 请不要在标题中塞进几个标签——毕竟,这就是 标签 的用途。取而代之的是,使用一个自包含的句子(片段)作为标题,由标签补充。

标签: r loops ggplot2 markdown r-markdown


【解决方案1】:

我会对您提供的示例和目标执行以下操作。首先我们为每个月绘制一个图:

plotlist <- split(sales, sales$month)
plotlist <- lapply(plotlist, function(df){
  ggplot(df, aes(x = month, y = type, fill = type)) +
    geom_col(position = "dodge")
})

然后制作标题和块,在其中打印绘图列表的每个元素:

## Month 1

```{r}
print(plotlist[[1]])
```

## Month 2

```{r}
print(plotlist[[2]])
```

我不知道以编程方式构造 Markdown 文档的任何方法(这并不意味着它不存在),所以到目前为止我只能为您提供帮助。

或者,如果您不介意输出,您可以执行以下操作:

```{r}
print(plotlist)
```

这将打印在您的输出文件中:

并且仍然将您的情节与月份信息保持在一起。

【讨论】:

  • 地块周围不需要print(…)。如果有什么我建议写plot 而不是print,但两者都没有必要。
猜你喜欢
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
  • 2020-05-02
  • 2018-08-16
  • 1970-01-01
  • 2014-02-07
  • 2012-12-30
  • 1970-01-01
相关资源
最近更新 更多