R 绘图以可视化a)多年来的集群大小b)集群之间的移动

R 绘图以可视化a)多年来的集群大小b)集群之间的移动,r,plot,graphics,R,Plot,Graphics,作为kmean聚类的结果,我在几年内将人员分配到不同的聚类中。 请参阅代码中的一个小示例 df <- data.frame( personID = c(1,2,3,4,5,6,7,8,9,10), cluster2008 = c(1,1,2,2,2,2,2,2,3,3), cluster2009 = c(1,1,1,2,2,3,3,2,3,3), cluster2010 = c(1,1,3,3,1,1,1,2,2,2) ) df这里是使用tidyverse和gg软件包的尝试 libra

作为kmean聚类的结果,我在几年内将人员分配到不同的聚类中。 请参阅代码中的一个小示例

 df <- data.frame(
personID = c(1,2,3,4,5,6,7,8,9,10),
cluster2008 = c(1,1,2,2,2,2,2,2,3,3),
cluster2009 = c(1,1,1,2,2,3,3,2,3,3),
cluster2010 = c(1,1,3,3,1,1,1,2,2,2)
)

df这里是使用
tidyverse
gg
软件包的尝试

library( tidyverse )
library( ggalluvial )

#prepare data for plotting
plotdata <- df %>%
  #melt data to long
  pivot_longer( cols          = starts_with("cluster") ,
                names_to      = "year",
                names_pattern = "^cluster(.*)",
                values_to     = "cluster" ) %>%
  #alter plot columns
  mutate( cluster = as.factor( cluster ), #clusters are discrete
          weight = 1 )#each person counts as 1 

ggplot(plotdata,
       aes(x = year, stratum = cluster, alluvium = personID, y = weight,
           fill = cluster, label = cluster)) +
  geom_flow() +
  geom_stratum( alpha = .5 ) +
  geom_text(stat = "stratum", size = 3) +
  #theme(legend.position = "none") +
  ggtitle("movement over clusters")
库(tidyverse)
图书馆(GG)
#为绘图准备数据
绘图数据%
#将数据融化为长数据
pivot_更长(cols=以(“集群”)开始),
名称_to=“年”,
名称\u pattern=“^cluster(.*)”,
值_to=“cluster”)%%>%
#改变绘图列
变异(簇=因子(簇),#簇是离散的
体重=1)#每人计1
ggplot(绘图数据、,
aes(x=年,地层=簇,冲积层=人形,y=重量,
填充=簇,标签=簇)+
geom_流()+
geom_地层(α=0.5)+
几何图形文字(stat=“地层”,尺寸=3)+
#主题(legend.position=“无”)+
ggtitle(“集群上的移动”)