r - 如何在 R 中绘制用 kmeans 获得的簇的 3D 图?

我的 dataframe包含具有 3 个属性的观察结果,我使用了 k-means将他们分为四个不同的组。我的目标是绘制我在 3d 中获得的集群绘图以便快速简便地查看聚类数据。

但是我不知道如何在 3D 中绘图,我有适用于 2D 的代码,但我不知道如何调整它以添加维度。 我的代码如下:

    library(ggplot2)
set.seed(137)
km = kmeans(bella,4, nstart=25)

df = as.data.frame(bella)
df$cluster = factor(km$cluster)
centers=as.data.frame(km$centers)
df

 ggplot(data=df, aes(x=Annual.Income..k.., z = Age, y=Spending.Score..1.100.)) +
 geom_point() + theme(legend.position="right") +
 geom_point(data=centers,
 aes(x=Annual.Income..k.., y=Spending.Score..1.100., z=Age,color=as.factor(c(1:4))), aes(x=Age, y=Spending.Score..1.100., color=as.factor(c(1:4))),
 size=10, alpha=.3, show.legend=FALSE)

如何创建 3D 图?提前致谢!

最佳答案

你也可以使用 plotly:

df = iris[,1:3]
df$cluster = factor(kmeans(df,3)$cluster)

library(plotly)
library(dplyr)
p <- plot_ly(df, x=~Sepal.Length, y=~Sepal.Width, 
z=~Petal.Length, color=~cluster) %>%
     add_markers(size=1.5)
print(p)

htmlwidget 的另一个选项是使用 threejs(它基于 scatterplot3d,如 @G5W 的回答所示):

library(threejs)
COLS = RColorBrewer::brewer.pal(3,"Set2")
scatterplot3js(as.matrix(df[,1:3]),col=COLS[df$cluster],size=0.3)

https://stackoverflow.com/questions/60589690/

相关文章:

r - 按列汇总 : mean and sum

flutter - 如何在 flutter, android studio 中不生成红色框,

javascript - Vue-Apexcharts 饼图总数不显示

pandas - 在 Pandas 中使用带有多索引的聚合

oracle - PL/SQL RAISE_APPLICATION_ERROR 参数问题

Django - 检查两个密码哈希是否具有相同的原始密码

python - 在 hvplot 中自定义标记列表

javascript - 在 Promise 完成后让 React 重新渲染

css - react-pdf 中的样式显示异常行为

amazon-web-services - AWS CLI : Could not connect