私は4種類の遺伝子型に属するいくつかのマウスの1日の摂取量からなるデータセットを持っています。私は階層的なクラスター分析を使用して水分摂取のパターンに従ってこれらの動物を分類し、次にクラスターごとの平均水分摂取量を日ごとにプロットする縦グラフを作成するためのスクリプトを作成しようとしています。次のように私は最初の階層的クラスタクラスタを作成しています、ということについてはカツトリーとクラスターブランチの相違
:
library("dendextend")
library("ggplot2")
library("reshape2")
data=read.csv("data.csv", header=T, row.names=1)
trimmed=data[, -ncol(data)]
hc <- as.dendrogram(hclust(dist(trimmed)))
labels.drk=data[,ncol(data)]
groups.drk=labels.drk[order.dendrogram(hc)]
genotypes=as.character(unique(data[,ncol(data)]))
k=4
cluster_cols=rainbow(k)
hc <- hc %>%
color_branches(k = k, col=cluster_cols) %>%
set("branches_lwd", 1) %>%
set("leaves_pch", rep(c(21, 19), length(genotypes))[groups.drk]) %>%
set("leaves_col", palette()[groups.drk])
plot(hc, main="Total animals" ,horiz=T)
legend("topleft", legend=genotypes,
col=palette(), pch = rep(c(21,19), length(genotypes)),
title="Genotypes")
legend("bottomleft", legend=1:k,
col=cluster_cols, lty = 1, lwd = 2,
title="Drinking group")
そして私は、取水平均をプロットするために、グループこれに属する動物を評価するためにcutree機能を使用していますグループごとに。
groups<-cutree(hc, k=k, order_clusters_as_data = FALSE))
x<-cbind(data,groups)
intake_avg=aggregate(data[, -ncol(data)], list(x$groups), mean, header=T)
df <- melt(intake_avg, id.vars = "Group.1")
ggplot(df, aes(variable, value, group=factor(Group.1))) + geom_line(aes(color=factor(Group.1)))
問題は、私は、私は、階層的クラスタAN cutree機能によって割り当てられた番号から取得する数字の間に違和感が生じていますということです。クラスターが1から4までのブランチを下に並べる間、cutree関数は私が慣れていない他の順序付けパラメーターを使用しています。そのため、クラスタープロットと取り込みグラフプロットのラベルが一致しません。
私は非常に多くの冗長な行とループを使用しているので、コードが短くなる可能性がありますので、私は非常に喜んでこの特定の問題を把握するのに役立つことができます。
クラスター:
摂取グラフ
"brunches" [sic]は通常、次の順序で表示されます。朝食