问题标签 [ggdendro]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
400 浏览

r - 使用 R ggplot2 右对齐多个绘图的水平 y 轴标题

我在右对齐 R ggplot2 中多个绘图的水平 y 轴标题时遇到问题。我有一个主图,它是一个带有使用 ggdendro 包创建的叶子标签的树状图,我在主图下方有多个颜色条,左侧有标题。如果我使用 grid.arrange 将图放置在同一页面上,我可以在图之间获得良好的垂直间距,但我无法一致地右对齐彩条的 y 轴标题。如果我使用 plot_grid,我可以一致地右对齐 y 轴标题,但我无法在绘图之间获得适当的垂直间距。任何帮助,将不胜感激!

更新:两个建议的解决方案同样有效,所以我接受第一个作为答案。ggarrange从 egg 包中使用并使用withplot_gridalign = "v"不是align = "hv"两者都解决了我的问题。

创建主图和彩条:

grid.arrange 方法:

在此处输入图像描述

plot_grid 方法:

在此处输入图像描述

0 投票
1 回答
101 浏览

r - 如何按给定值(沉积物核心中的深度)而不是按顺序绘制树状图叶子?

我正在处理生态数据(沉积物核心中不同深度处不同硅藻物种的丰度百分比),并希望将结果与代表分层聚类分析 (CONISS) 的结果的树状图一起绘制,我将使用它来拆分核心进入生态区。

这是我试图实现的事情类型的一个例子:

我已成功运行聚类分析,但正在努力按照我想要的方式绘制树状图。每当我绘制树状图时,它都会按顺序绘制树状图的叶子(如此处所示)。但是,我需要叶子从沉积物核心顶部按深度绘制,以便在我检查过的核心的每个深度都有一片叶子,并且在树状图中我缺少样本的地方存在间隙(如此处显示)。(注意这里没有显示 y 轴,因为树状图将连接到图表的其余部分,其中已经包含 y 轴。)

我设法通过 rioja 包使用plot.chclust并为参数提供叶子的深度来创建后一个图xvar。但是,我已经用 ggplot(以及 tidypaleo 包的帮助)构建了图表的其余部分(物种丰度数据、PCA 结果等),然后使用 cowplot 组合了它的各个方面。我需要能够通过 ggplot 创建树状图,以便将其添加到我的主图中。我已经调查了 ggdendro 和 dendextend 包,但找不到使用这些包根据深度绘制树状图的方法。这可能吗?这些软件包是否具有我不知道的功能?我开始研究这些包的源代码以及as.dendrogram看看我是否能找到一种方法来修改函数以按深度绘制叶子,但这超出了我的技能水平。我想知道是否有人有一个解决方案可以让我按沉积物核心的深度而不是按顺序绘制树状图?

我的数据

这是我在下面的代码中用来计算距离矩阵的数据。(为很长的输入道歉!)

我绘制树状图的代码

0 投票
1 回答
78 浏览

r - ggdendrogram :为每个集群添加彩色矩形

我无法在所选集群周围添加彩色矩形。

我得到了这个答案:“rect.dendrogram(csin, 3, border = 1:3) 中的错误:x 不是树状图对象。” 虽然 csin 是树状图对象。有人有线索吗?

0 投票
0 回答
34 浏览

r - 为什么有两个不同的集群图像?

我正在处理一些数据。我已经完成了层次聚类分析。首先我用热图进行聚类分析,然后只是为了好玩,我对列变量和行变量进行了不同的聚类分析。我很惊讶,因为行簇与热图相似,但列簇与热图完全不同,为什么会这样?

注意:为了获得最佳集群,我进行了肘部测试。

我用于热图的数据

和我使用的代码

此代码中的图 在此处输入图像描述

现在我在没有热图的情况下分别对行和列进行了层次聚类分析。对于列簇,当我使用该代码时它可以工作。

这段代码中,column cluster 和 heatmap 类似,见图 在此处输入图像描述

但是当我对下面的数据使用相同的代码时

该图与热图不匹配。上面的数据是转置数据,hdata但它是在excel中创建的。现在我很困惑,因为如果hdata在 r 中转置,那么分析是可以的,但是如果我下载hdata并在 excel 中转置它,然后在 r 中工作,图就改变了。为什么?

这个数字是 在此处输入图像描述

0 投票
1 回答
71 浏览

r - 右侧带有标签的树状图

我想要一个带有右侧变量名称的水平树状图来显示相关系数。如果我可以在一些与 ggplot2 相关的包中实现它会很好,因为我希望该图与我的其他图形相似。scale_x_discrete(position="top)不起作用,因为这样标签就会消失。这些是我到目前为止的结果:

当前的树枝

(我偷了相关变量的准备:https ://cran.r-project.org/web/packages/faux/vignettes/rnorm_multi.html )

但这就是我想要的(只是一个快速的蒙太奇):

我想要的是

编辑:感谢@tjebo,这是我的最终解决方案(我删除了所有不需要的部分,查看他的答案以获得更通用的答案):

0 投票
0 回答
33 浏览

r - 如何将映射文件添加到树状图上

我在使用树状图绘制系统发育分析方面非常陌生,而且我被我的代码卡住了。到目前为止,我已经设法绘制了一个系统发育树。我在 pdf 中得到了一张漂亮的图片 在此处输入图像描述

使用下面的代码,但它没有标题、图例和映射信息。我想做的是将映射文件添加到绘图上,使其看起来像这样在此处输入图像描述。映射文件是一个 excel 文件,具有三列(有机体名称、其门和序列本身)在此处输入图像描述。我想要完成的是使用门列(同时保持有机体名称不变)对图进行颜色编码的叶子的尖端,有一个图例和一个标题。谢谢你的帮助。

0 投票
0 回答
20 浏览

r - 我可以将使用 ggdendro 绘制的 data.tree 的分支居中吗?

我正在尝试在类似树状图的图中绘制树格式的数据。这些数据来自随着时间的推移对细胞分裂的测量,这正是我想要展示的方式。

经过大量数据争论后,我发现自己至少能够以 data.tree 包接受的方式格式化我的数据。也许我应该选择 ape 包格式,但那些“phylo”对象与 stats::as.dendrogram 不兼容。无论如何,这是数据的示例:

数据树结构

现在,我想将这些数据绘制为类似树状图的结构。方便的是,data.tree 可以简单地传递给 stats::as.dendrogram(),但它看起来不太正确:

树状图

幸运的是,这种奇怪的行为可以通过定义分支应该连接到所有孩子的中心来解决:

固定树状图

这看起来很棒!为了更好地控制绘图参数(并为叶子上的点添加例如美学),我将其转换为 ggdendro 对象:

ggdendro 情节

如您所见,在 ggdendro 图没有 center = TRUE 的情况下也会出现同样的问题。但是,无论我尝试什么,我似乎都找不到将正确的树状图数据提供给 ggdendro 包的方法。

有人熟悉帮助我的方法吗?

提前致谢!

0 投票
1 回答
43 浏览

r - R中树状图的非叶节点中的标签

我想根据几个标准(Column1,Column2,Column3)以R中的树状图的形式创建一个对几个项目(Name1,Name2,Name3,...)进行分类的图形(我喜欢树状图的正交美学为此)。

我有以下 CSV(data.csv),其中包含每个标准中的项目及其分类:

以及以下 R 代码:

目前,我在非叶节点中获得以下没有标签的图像:

R中的树状图在非叶节点中没有标签

我想知道是否可以在树状图中的每个非叶节点中显示标签。例如,在 Column1 的决策中在每条边(与非叶节点相关)上显示“A”和“B”,在 Column2 的决策中在每条边上显示“C”和“D”,依此类推。此外,是否可以将项目名称放在图形的右侧?提前致谢。