R:更改 plot.Mclust AND/OR 中的轴标签,使用 ggplot2 绘制 mclust 模型的不确定性

R: Change axis label in plot.Mclust AND/OR plot uncertainty of mclust model with ggplot2

我真的很困惑。我想更改 R'Mclust' model object 的绘图(分类或不确定性)的轴标签,我不明白为什么它适用于只有两个变量的简单对象,而不是几个变量那些。

举个例子:

require(mclust)

mod1 = Mclust(iris[,1:2])
plot(mod1, what = "uncertainty", dimens = c(1,2), xlab = "test")
# changed x-axis-label

mod2 = Mclust(iris[,1:4])
plot(mod2, what = "uncertainty", dimens = c(1,2), xlab = "test")
# no changed x-axis-label

我尝试的另一种方法是 coordProj:

coordProj(data= iris[, -5], dimens = c(1,2), parameters = mod2$parameters,
          z = mod2$z, what = "uncertainty", xlab = "test")
# Error in plot.default(data[, 1], data[, 2], pch = 19, main = "", xlab = xlab,  : 
#                       formal argument "xlab" matched by multiple actual arguments

所以我想,也许它会与 ggplot2 一起使用(那将是我最喜欢的选择)。现在我可以更改轴标签等等,但我不知道如何绘制椭圆?

require(ggplot2)

ggplot(data = iris) +
  geom_point(aes(x  = Sepal.Length, y = Sepal.Width, size = mod2$uncertainty)) +
  scale_x_continuous(name = "test")

如果有人知道更改 plot.Mclust 中的轴标签或将省略号添加到 ggplot 中的解决方案,那就太好了。 非常感谢!

我开始查看 plot.Mclust 的代码,但后来我只是使用 stat_ellipse 并更改了级别,直到绘图看起来相同。它似乎是置信度为 50%(而不是默认的 95%)的联合 t-分布(默认)。使用实际的协方差矩阵 (mod2$parameters$variance$sigma) 可能有更好的方法,但这可以让你到达你想要的位置。

require(dplyr)

iris %>%     
     mutate(uncertainty = mod2$uncertainty,
            classification = factor(mod2$classification)) %>% 
     ggplot(aes(Sepal.Length, Sepal.Width, size = uncertainty, colour = classification)) +
       geom_point() + 
       guides(size = F, colour = F) + theme_classic() +
       stat_ellipse(level = 0.5, type = "t") + 
       labs(x = "Label X", y = "Label Y")