无法使用 ggtree 绘制 hclust 对象
Unable to plot hclust object with ggtree
我正在尝试使用 ggtree
从 hclust
对象绘制树状图,但我不断收到相同的错误消息:
Error: `data` must be a data frame, or other object coercible by `fortify()`, not an S3 object with class hclust
我一直在广泛寻找解决方案,但找到了 none。此外,我了解到 ggtree
does support hclust
objects, which has confused me even more. From here:
The ggtree package supports most of the hierarchical clustering
objects defined in the R community, including hclust
and dendrogram
as
well as agnes
, diana
and twins
that defined in the cluster package.
我从上面的link中借用了一个可重现的例子:
hc <- hclust(dist(mtcars))
p <- ggtree(hc, linetype='dashed')
再次出现上述错误。如果我使用 rlang::last_error()
来获取一些上下文,我会得到:
<error/rlang_error>
`data` must be a data frame, or other object coercible by `fortify()`, not an S3 object with class hclust
Backtrace:
1. ggtree::ggtree(hc, linetype = "dashed")
3. ggplot2:::ggplot.default(...)
5. ggplot2:::fortify.default(data, ...)
如果我使用 rlang::last_trace() 获取更多信息:
<error/rlang_error>
`data` must be a data frame, or other object coercible by `fortify()`, not an S3 object with class hclust
Backtrace:
x
1. \-ggtree::ggtree(hc, linetype = "dashed")
2. +-ggplot2::ggplot(...)
3. \-ggplot2:::ggplot.default(...)
4. +-ggplot2::fortify(data, ...)
5. \-ggplot2:::fortify.default(data, ...)
但我真的能看出哪里不对...
我已经设法解决了我的问题。我会 post 它以防将来对其他人有帮助。
显然,我 运行 正在使用 ggtree
的旧版本,当我从 Bioconductor 重新安装 ggtree
时,它没有正确更新,我不确定为什么。无论如何,我试图通过在安装调用中显式设置 version
参数来重新安装它:
BiocManager::install("ggtree", version = "3.10")
然后我可以成功 运行 我的可重现示例:
hc <- hclust(dist(mtcars))
p <- ggtree(hc, linetype='dashed')
请注意,作为之前的解决方法,我设法通过 ggtree
将 hcluster
对象转换为具有 as.phylo()
函数的 phylo
对象来绘制对象ape
包:
hc <- hclust(dist(mtcars))
hc <- ape::as.phylo(hc)
p <- ggtree(hc, linetype='dashed')
我正在尝试使用 ggtree
从 hclust
对象绘制树状图,但我不断收到相同的错误消息:
Error: `data` must be a data frame, or other object coercible by `fortify()`, not an S3 object with class hclust
我一直在广泛寻找解决方案,但找到了 none。此外,我了解到 ggtree
does support hclust
objects, which has confused me even more. From here:
The ggtree package supports most of the hierarchical clustering objects defined in the R community, including
hclust
anddendrogram
as well asagnes
,diana
andtwins
that defined in the cluster package.
我从上面的link中借用了一个可重现的例子:
hc <- hclust(dist(mtcars))
p <- ggtree(hc, linetype='dashed')
再次出现上述错误。如果我使用 rlang::last_error()
来获取一些上下文,我会得到:
<error/rlang_error>
`data` must be a data frame, or other object coercible by `fortify()`, not an S3 object with class hclust
Backtrace:
1. ggtree::ggtree(hc, linetype = "dashed")
3. ggplot2:::ggplot.default(...)
5. ggplot2:::fortify.default(data, ...)
如果我使用 rlang::last_trace() 获取更多信息:
<error/rlang_error>
`data` must be a data frame, or other object coercible by `fortify()`, not an S3 object with class hclust
Backtrace:
x
1. \-ggtree::ggtree(hc, linetype = "dashed")
2. +-ggplot2::ggplot(...)
3. \-ggplot2:::ggplot.default(...)
4. +-ggplot2::fortify(data, ...)
5. \-ggplot2:::fortify.default(data, ...)
但我真的能看出哪里不对...
我已经设法解决了我的问题。我会 post 它以防将来对其他人有帮助。
显然,我 运行 正在使用 ggtree
的旧版本,当我从 Bioconductor 重新安装 ggtree
时,它没有正确更新,我不确定为什么。无论如何,我试图通过在安装调用中显式设置 version
参数来重新安装它:
BiocManager::install("ggtree", version = "3.10")
然后我可以成功 运行 我的可重现示例:
hc <- hclust(dist(mtcars))
p <- ggtree(hc, linetype='dashed')
请注意,作为之前的解决方法,我设法通过 ggtree
将 hcluster
对象转换为具有 as.phylo()
函数的 phylo
对象来绘制对象ape
包:
hc <- hclust(dist(mtcars))
hc <- ape::as.phylo(hc)
p <- ggtree(hc, linetype='dashed')