r - 如何使用 lattice 包(不是 ggplot2)创建边际直方图散点图?
问题描述
长话短说,我正在为数据可视化课程做作业,作业指定我们必须使用 lattice 包,并且我们必须创建边缘直方图散点图。(我知道询问家庭作业问题是不受欢迎的,但我并不是要你为我写作业——只是要求指导或至少是一个开始的方向)。
我们的讲座和书籍没有提到任何关于边际直方图散点图的内容,虽然讲座展示了如何使用 R 中的标准绘图函数创建它们以及如何使用 ggplot2 来创建它们,但我们被告知不要使用任何一个。我以前从未使用过 lattice,当我寻求帮助时,我得到的一般反应根本没有帮助。
注意:我没有发布问题或我必须使用什么类型的数据,因为我不是在这里寻找作业的答案。只是一些关于从哪里开始的帮助。如果你想展示一个例子,你可以从字面上使用任何数据。
解决方案
这在 lattice 中也绝对是一个棘手的问题。有很多令人信服的原因ggplot2
可以成为更受欢迎的软件包之一,而 lattice 仍然非常强大。由于这是可视化课程的一部分,我假设您打算提出类似于ggMarginal
. 为此,您必须花一些时间调整margin
格子图上的 s。
作为我如何解决这个问题的指导方针,我找到了以下答案:
- 在 google 上搜索lattice margin histogram,第二个链接是一个邮件帮助列表的答案,它给出了一个类似问题的例子
- 打开 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))
- 走到这一步之后,就是要弄清楚实际发生了什么。上面的链接建议查看
?plot.trellis
,这里的重要性似乎是我们如何移动我们的情节,这似乎是由split
. 查看文档 (?plot.trellis
) 我们可以帮助我们了解如何使用此参数
一个由 4 个整数组成的向量
c(x, y, nx, ny)
, 表示将当前绘图定位在x
,位置在by绘图y
的常规数组中。(注意:这在左上角有原点)nx
ny
从这里我们拥有创建边际图所需的一切,如果我们将其设为2x2
图,我们将在 处放置一个直方图,在 处放置一个c(1, 1, 2, 2)
散点图,在处放置c(2, 1, 2, 2)
另一个直方图c(2, 2, 2, 2)
。当然,这不会是最好看的边际情节,为此您必须使用margin
s 或进入引擎盖并使用包手动设置情节grid
。我会说这绝对是“下一个级别”的事情。
笔记:
在上面的示例中,我没有介绍如何旋转一个直方图,或者如果您想要ggMarginal
更紧密地复制,如何创建横向直方图。
此外,正如您所说,您在查找这方面的信息时遇到了一些问题。寻找答案的另一个选择是阅读?histogram
文档页面。此页面中有几个示例(以及许多其他示例)显示了如何操纵lattice
绘图的位置。
推荐阅读
- multithreading - Azure Functions 并发:maxConcurrentRequests 与 FUNCTIONS_WORKER_PROCESS_COUNT
- linux - 使用带有完成结构的 pselect()?
- gunicorn - 启动 gunicorn.service 失败:单位 gunicorn.service 被屏蔽
- mysql - Impala 中 FIRST() 和 LAST() 的等价物
- machine-learning - 是不是过拟合的问题?或者发生了什么?
- ansible - 以编程方式创建运行 ansible-playbook 的 sudo 规则
- javascript - 在 JS 中从一个网站到另一个网站的 POST 请求
- kubernetes - 如何使用内部 IP 从 GCE 连接到 GKE 服务
- ios - 是否可以使用在实现文件而不是目标 c 中的接口文件中添加的扩展方法?
- r - Wilcoxon 对重度关联数据的秩检验