2017-02-07 2 views
2

J'utilise le package DTW dans R. et j'ai enfin terminé la classification hiérarchique. mais je veux tracer le cluster de séries temporelles séparément comme ci-dessous l'image.Tracer l'élément de cluster dans r

enter image description here

sc <- read.table("D:/handling data/confirm.csv", header=T, sep=",") 
rownames(sc) <- sc$STDR_YM_CD 
sc$STDR_YM_CD <- NULL 
col_n <- colnames(sc) 

hc <- hclust(dist(sc), method="average") 
plot(hc, main="") 

Comment puis-je faire ?? Mes données http://blogattach.naver.com/e772fb415a6c6ddafd1370417f96e494346a9725/20170207_141_blogfile/khm2963_1486442387926_THgZRt_csv/confirm.csv?type=attachment

+0

Combien de groupes voulez-vous dans les données? Aussi pourriez-vous s'il vous plaît mettre vos données ici? Le lien est en chinois que je ne comprends pas. – discipulus

+0

Oh je ne sais pas comment puis-je mettre les données dans ce post. Je vais indiquer comment les gens peuvent obtenir les données ou voulez-vous me donner votre adresse e-mail ?? –

+0

votre série chronologique est le long des colonnes, mais vous regroupez les lignes. Vous n'avez pas besoin de regrouper les colonnes? –

Répondre

3

Vous pouvez essayer ceci:

sc <- read.table("confirm.csv", header=T, sep=",") 
rownames(sc) <- sc$STDR_YM_CD 
sc$STDR_YM_CD <- NULL 
col_n <- colnames(sc) 

sc <- t(sc) # make sure your rows represent the time series data 
id <- rownames(sc) 
head(sc) 

hc <- hclust(dist(sc), method="average") 
plot(hc, main="") 

n <- 20 
sc <- cbind.data.frame(id=id, sc, cluster=cutree(hc, k = n)) 

library(dplyr) 
library(tidyr) 
library(ggplot2) 
sc %>% gather(variable, value, -id, -cluster) %>% 
ggplot(aes(variable, value, group=id, color=id)) + geom_line() + 
    facet_wrap(~cluster, scales = 'free') + guides(color=FALSE) + 
    theme(axis.text.x = element_text(angle=90, vjust = 0.5)) 

enter image description here

+0

Merci vraiment ~ J'ai graphique! Vous êtes les meilleures femmes ?? ou un mec ?? ~~ J'ai une autre question. J'ai changé le deuxième code de ligne 'rownames (sc) <- id' à' rownames (sc) <- sc $ STDR_YM'_CD. C'est bon? quand j'utilise le premier code, je reçois un message Erorr –

+1

Merci ~~ J'espère que beaucoup de gens voient cette réponse afin de partager cette grande connaissance –

+0

Comment les données peuvent-elles vous diriger les données? – sbradbio

0

Vous pouvez utiliser cutree pour regrouper les points de données et utiliser facet_wrap (du paquet ggplot2) sur les clusters pour les tracer. Comme je n'ai pas pu obtenir vos données, j'ai un exemple de données accessibles au public.

narrest <- USArrests 

# Clustering 
hc <- hclust(dist(narrest), "ave") 
plot(hc) 

# Cut the tree to required number of clusters, here 3 
narrest$clusters <- cutree(hc, k = 3) 

# use facet_wrap from ggplot to one variable Murder 
d <- ggplot(narrest, aes(y=Murder, x=1:nrow(narrest))) + geom_line() 
d + facet_wrap(~ clusters) 
print(d) 
+0

Salut ~ vraiment merci ~ mais je change mon lien pour le fichier. Alors pourriez-vous me montrer la démonstration ?? Je pense que mes données sont erronées. HAHA Je ne sais pas où sont les valeurs y. –