首页 > 解决方案 > 如何使用 lattice 包(不是 ggplot2)创建边际直方图散点图?

问题描述

长话短说,我正在为数据可视化课程做作业,作业指定我们必须使用 lattice 包,并且我们必须创建边缘直方图散点图。(我知道询问家庭作业问题是不受欢迎的,但我并不是要你为我写作业——只是要求指导或至少是一个开始的方向)。

我们的讲座和书籍没有提到任何关于边际直方图散点图的内容,虽然讲座展示了如何使用 R 中的标准绘图函数创建它们以及如何使用 ggplot2 来创建它们,但我们被告知不要使用任何一个。我以前从未使用过 lattice,当我寻求帮助时,我得到的一般反应根本没有帮助。

注意:我没有发布问题或我必须使用什么类型的数据,因为我不是在这里寻找作业的答案。只是一些关于从哪里开始的帮助。如果你想展示一个例子,你可以从字面上使用任何数据。

标签: rlattice

解决方案


这在 lattice 中也绝对是一个棘手的问题。有很多令人信服的原因ggplot2可以成为更受欢迎的软件包之一,而 lattice 仍然非常强大。由于这是可视化课程的一部分,我假设您打算提出类似于ggMarginal. 为此,您必须花一些时间调整margin格子图上的 s。

作为我如何解决这个问题的指导方针,我找到了以下答案:

  1. 在 google 上搜索lattice margin histogram,第二个链接是一个邮件帮助列表的答案,它给出了一个类似问题的例子
  2. 打开 R 并按照链接做一个小例子。例如。
data(mtcars)
library(lattice)
scatter <- xyplot(hp ~ mpg, mtcars)
hist <- histogram(~ mpg, mtcars)
plot(scatter, more = TRUE, split = c(1, 2, 1, 2))
plot(hist, more = FALSE, split = c(1, 1, 1, 2))

裂区格子

  1. 走到这一步之后,就是要弄清楚实际发生了什么。上面的链接建议查看?plot.trellis,这里的重要性似乎是我们如何移动我们的情节,这似乎是由split. 查看文档 ( ?plot.trellis) 我们可以帮助我们了解如何使用此参数

一个由 4 个整数组成的向量c(x, y, nx, ny), 表示将当前绘图定位在x,位置在by绘图y的常规数组中。(注意:这在左上角有原点)nxny

从这里我们拥有创建边际图所需的一切,如果我们将其设为2x2图,我们将在 处放置一个直方图,在 处放置一个c(1, 1, 2, 2)散点图,在处放置c(2, 1, 2, 2)另一个直方图c(2, 2, 2, 2)。当然,这不会是最好看的边际情节,为此您必须使用margins 或进入引擎盖并使用包手动设置情节grid。我会说这绝对是“下一个级别”的事情。

笔记:

在上面的示例中,我没有介绍如何旋转一个直方图,或者如果您想要ggMarginal更紧密地复制,如何创建横向直方图。
此外,正如您所说,您在查找这方面的信息时遇到了一些问题。寻找答案的另一个选择是阅读?histogram文档页面。此页面中有几个示例(以及许多其他示例)显示了如何操纵lattice绘图的位置。


推荐阅读