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

时间:2017-10-04 15:38:11

标签: r blogdown

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

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创建一个博客帖子。

2 个答案:

答案 0 :(得分:1)

您使用 blogdown 时遇到的问题是您使用的是绝对本地路径/home/rsl/r-plots/sample.png。通常,使用绝对路径是一个坏主意,因为它们不可移植。在此特定情况下,当您将帖子发布到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,这绝对不是您的真实含义。 Web服务器对您计算机上的本地文件一无所知,当然也无法在本地磁盘上找到任何文件,因此不会在网页上加载该图。

简而言之,删除它:

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

使用 knitr 或基于 knitr 的任何套餐创作文档时,例如 rmarkdown bookdown blogdown ,有no need to manually save plots using ggsave() or R graphical devices。 R图将自动保存在幕后。

答案 1 :(得分:0)

这种作品,但代码可能更清晰。

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")

enter image description here

我现在使用blogdown::new_post(title = "title")创建一个新帖子,并在由*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)

我希望在执行serve_site()后,在帖子中找到名为 title 的帖子,然后使用默认设置build_site()。但情节并没有加载。