使用knitr的绘图输出缺少面板

时间:2014-11-15 23:33:20

标签: html r plot markdown knitr

我有一个包含3列的数据框。列Days是一个因子向量,有2个因子"工作日"和"周末"

使用此代码,我创建了2个因素的图表,其中2个面板彼此叠加:

xyplot(Avg_Steps ~ Interval | Days, groups = Days, data = agg_subdata_avg, type = "l", layout = (c(1,2)))

但是,在R markdown文件中使用相同的代码并使用knitr创建HTML输出时,顶部面板不会显示。造成这种差异的原因是什么?

{r, echo = TRUE, fig.width=6, fig.height = 6}
library(lattice)
xyplot(Avg_Steps ~ Interval | Days, groups = Days, data = agg_subdata_avg, type = "l", layout =      (c(1,2)))

3 个答案:

答案 0 :(得分:0)

使用您提供的代码复制您描述的行为的一种方法是首先过滤掉" agg_subdata_avg"中的所有行。其中包含"周末"在" Days"列,然后继续绘图。

只需仔细检查两个级别是否已表示,您可以尝试将此行插入xyplot函数旁边的 Rmd 文件中,然后重新编译:

print(unique(agg_subdata_avg$Days))

至于为什么代码在 R 控制台中完美运行但在创建HTML文件时失败,最有可能 [1]两个数据框实际上并不相同(您是否可能更改了一个而不是另一个?)。

如果这些都没有帮助,那么您最好的选择可能是提供更多信息: R 版本, knitr 等等,并且可能会添加一个可重复的示例。

[为了它的价值,我尝试编织一个包含你的代码的文件,一切都按预期工作。]

[1]或者,更确切地说:"每当这种事情发生在我身上时,因为" ......

答案 1 :(得分:0)

我现在从“可重复研究”课程中完成同样的任务。 我得到了相同的结果:在html文件中只显示了两个面板中的一个。

事实证明,在创建R markdown文件的过程中,我使用了选项cache = TRUE,虽然我没有删除它但是我第一次创建了错误的旧图。

答案 2 :(得分:0)

以前的提示非常有用:" print(unique(agg_subdata_avg $ Days))"。

我遇到了同样的问题,发现根本原因是因为语言环境设置。 课程分配需要使用因子值填充新列("工作日","周末")。比较日期值时,您必须检查填充数据的方式。