【问题标题】:Plot k-mean cluster with ggplot2用 ggplot2 绘制 k 均值簇
【发布时间】:2023-03-30 22:54:02
【问题描述】:

我想知道如何使用 ggplot2 进行绘图。 bdata[,c(25:54)] 是数据框中的 30 列,其中包含基因表达的值,每列是一个基因。

cl <- kmeans(t(bdata[,c(25:54)]), 3)
plot(t(bdata[,c(25:54)]), col = cl$cluster)
points(cl$centers, col = 1:3, pch = 8, cex=2)

如何使用 ggplot2 绘制 kmeans 集群,以获得与 plot 函数相同的图?

【问题讨论】:

  • 您能否发布一个有代表性的数据子集(最好使用dput())?没有它,你看,我们会迷路。

标签: r plot ggplot2 k-means


【解决方案1】:

所以,我不知道 bdata 是什么,但这里有一个 iris 数据框的示例:

iris %>% select(-Species) %>% # remove Species column
 kmeans(centers=3) ->        # do k-means clustering with 3 centers
 km                          # store result as `km`

所以这里有 3 个中心,因为我们知道数据集中有 3 个物种。对于绘图,我们希望集群是一个因素,而不是一个连续变量。

iris_clustered <- data.frame(iris, cluster=factor(km$cluster))
ggplot(iris_clustered, aes(x=Petal.Width, y=Sepal.Width, color=cluster, 
    shape=Species)) + geom_point()

Image of resulting PCA

【讨论】:

  • 我看过这个例子,但是我的数据不一样,这里的数据是列的,但是我必须转置数据才能做“kmeans”,我没有有 2 个变量在 x 和 y 中绘制,例如花瓣和萼片宽度。
  • 如果你想使用带有 geom_point() 层的 ggplot,你需要提供一个 X 和 Y 参数。您可以使用 dplyr 对数据进行子集化以仅绘制您想要的列,例如 'data %>% select(1:30)' ,也许 tidyr 中有一些东西可以帮助您将数据转换为可供 ggplot 使用的数据?没有您的数据很难知道。
猜你喜欢
  • 2012-06-19
  • 2018-04-04
  • 1970-01-01
  • 2015-07-22
  • 2021-08-28
  • 2013-10-20
相关资源
最近更新 更多