在 R 中使用 hclust 时 Show(plot(hc)) returns NULL

Show(plot(hc)) returns NULL when using hclust in R

我正在使用 VSCode 并且我正在尝试可视化 hclust() 生成的树状图。我的数据集 (baseMini) 由二维向量组成,到目前为止,这是我所做的:

dd <- dist(x = baseMini, method = "euclidean")
hc <- hclust(d = dd, method = "complete")
plot_hc <- plot(x = hc)

我确认dd是一个距离矩阵,它看起来像这样:

              1          2          3       3000       3001       3002
2     1.6710624
3     0.9892719  2.0635176                                            
3000  6.4243003  7.9459624  5.9004292
3001  6.3986419  7.9904130  5.9925833  0.8342891
3002  7.6690587  8.9921632  6.9431019  2.1140049  2.8991615
6001  7.5003784  5.9874636  7.3277637 12.6488917 12.9759681 12.8943846

然后,尝试检查 hc 我得到这样的结果(我真的不知道 hclust() 输出会发生什么):

> hc

Call:
hclust(d = dd, method = "complete")

Cluster method   : complete
Distance         : euclidean
Number of objects: 7

但是,当我想用​​ show(plot_hc) 显示情节时,甚至只是请求 plot_hc 时,我得到一个 NULL 输出。我到处寻找他们总是使用这些相同的步骤,从不提及任何特定的图书馆或其他任何东西。我错过了什么,为什么 VSCode/R 无法识别情节?

附加信息: 我试着用 plot.hclust(hc) 询问,但我发现没有函数“plot.hclust”。 另一件事可能是在文件的开头我使用了库 (ggplot),但我不知道它是否会以某种方式干扰 plot()。另外,也许错误在于我准备数据集的方式,但它看起来很标准:

> baseMini
             X1        X2
1     2.1135390 0.3644160
2     0.4427359 0.3938498
3     2.2764659 1.3401791
3000  7.8718230 3.2128892
3001  8.1685351 2.4331455
3002  7.9622546 5.3249591
6001 -4.7765455 3.3279293

非常感谢任何帮助。

这也难倒了我。它是一个 hclust 对象不是问题,而是 plot() 函数的工作方式。 ggplot() 输出很好地保存到您的环境中,但它对 plot() 的效果不同。我看到一些建议使用 recordPlot() 的方法。 可以提供更多细节和另一种方法。祝你好运。

# these steps don't work
doesnt_work <- plot(1:3, 1:3)
doesnt_work
#> NULL

# but these steps do
plot(1:3, 1:3)    # make plot
p <- recordPlot() # assign existing plot outputoutput
plot.new()        # clean up device
p                 # redraw