一个面板中的多个时间序列动物园对象; blogdown serve_site() 不加载情节

Multiple timeseries zoo objects in one panel; blogdown serve_site() doesn't load plot

我有几个通过循环生成的 zoo 对象。我想在一个面板中绘制所有对象。我想这可以通过首先将动物园对象合并到类似矩阵的动物园对象并在 plot.zoo() 中提供 plot.type = "multiple"screens = ncol(merged-zoo-object) 参数来完成,但我不知道如何合并.

library(zoo)
for (i in 1:3) {
value <- rnorm(n = 12, mean = i)
index <- seq(as.Date("2000/1/1"), by = "month", length.out = 12)
ts <- zoo(x = value, order.by = index)
plot.zoo(ts)
}

更新

我已经成功地创建了情节(已回答)并且我想创建一个包含 blogdown 的博文。

这种方法可行,但代码本来可以更简洁。

require(zoo)
require(ggfortify)

merged.zoo <- zoo()
for (i in 1:3) {
  value <- rnorm(n = 12, mean = i)
  index <- seq(as.Date("2000/1/1"), by = "month", length.out = 12)
  ts <- zoo(x = value, order.by = index)
  merged.zoo <- merge.zoo(merged.zoo, ts)
}

autoplot.zoo(object = merged.zoo, geom = "line")
ggsave(filename = "sample.png", path = "~/r-plots")

我现在用 blogdown::new_post(title = "title") 创建一个新的 post 并在 *title.rmd 文件中添加以下文本,该文件由 new_post 命令创建。

---
title: title
author: ~
date: '2017-10-05'
slug: title
categories: []
tags: []
---

![I want to see this plot](/home/rsl/r-plots/sample.png)

我希望在 post 中看到名为 title 的情节,当 serve_site() 执行后 build_site() 使用默认设置。但是情节没有加载。

您在使用 blogdown 时遇到的问题是您使用的是绝对本地路径 /home/rsl/r-plots/sample.png。通常,使用绝对路径不是一个好主意,因为它们不可移植。在这种特定情况下,当您将 post 发布到 Web 服务器时,/home/rsl/r-plots/sample.png 的含义将会改变。表示您网站根目录下的文件/home/rsl/r-plots/sample.png。比如你的网站是http://example.com,那么文件路径就是http://example.com/home/rsl/r-plots/sample.png,这肯定不是你实际的意思。网络服务器对你电脑上的本地文件一无所知,当然也找不到你本地磁盘上的任何文件,所以网页上不会加载剧情。

简而言之,删除这个:

ggsave(filename = "sample.png", path = "~/r-plots")

当您使用 knitr 或任何基于 knitr 的包创作文档时,例如 rmarkdownbookdownblogdown,还有no need to manually save plots using ggsave() or R graphical devices。 R图将在后台自动保存。