クラスタを樹形図や色にラベルを追加 は、私は、このように<code>ggdendro</code>を使用して系統樹を作成
マイネットワークは次のとおりです。
> dput(net)
structure(list(77, FALSE, c(1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 11,
11, 11, 11, 12, 13, 14, 15, 17, 18, 18, 19, 19, 19, 20, 20, 20,
20, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23,
23, 23, 23, 23, 23, 24, 24, 25, 25, 25, 26, 26, 26, 26, 27, 27,
27, 27, 27, 28, 28, 29, 29, 29, 30, 31, 31, 31, 31, 32, 33, 33,
34, 34, 35, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 37, 38, 38,
38, 38, 38, 38, 39, 40, 41, 41, 42, 42, 42, 43, 43, 43, 44, 44,
45, 47, 48, 48, 48, 48, 49, 49, 50, 50, 51, 51, 51, 52, 52, 53,
54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 56, 56, 57,
57, 57, 58, 58, 58, 58, 58, 59, 59, 59, 59, 60, 60, 60, 61, 61,
61, 61, 61, 61, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63,
63, 63, 63, 63, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 65, 65,
65, 65, 65, 65, 65, 65, 65, 65, 66, 66, 66, 66, 66, 66, 66, 66,
66, 67, 68, 68, 68, 68, 68, 68, 69, 69, 69, 69, 69, 69, 69, 70,
70, 70, 70, 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 71, 71, 72,
72, 72, 73, 74, 74, 75, 75, 75, 75, 75, 75, 75, 76, 76, 76, 76,
76, 76, 76), c(0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 10, 3, 2, 0, 11,
11, 11, 11, 16, 16, 17, 16, 17, 18, 16, 17, 18, 19, 16, 17, 18,
19, 20, 16, 17, 18, 19, 20, 21, 16, 17, 18, 19, 20, 21, 22, 12,
11, 23, 11, 24, 23, 11, 24, 11, 16, 25, 11, 23, 25, 24, 26, 11,
27, 23, 27, 11, 23, 30, 11, 23, 27, 11, 11, 27, 11, 29, 11, 34,
29, 34, 35, 11, 29, 34, 35, 36, 11, 29, 34, 35, 36, 37, 11, 29,
25, 25, 24, 25, 41, 25, 24, 11, 26, 27, 28, 11, 28, 46, 47, 25,
27, 11, 26, 11, 49, 24, 49, 26, 11, 51, 39, 51, 51, 49, 26, 51,
49, 39, 54, 26, 11, 16, 25, 41, 48, 49, 55, 55, 41, 48, 55, 48,
27, 57, 11, 58, 55, 48, 57, 48, 58, 59, 48, 58, 60, 59, 57, 55,
55, 58, 59, 48, 57, 41, 61, 60, 59, 48, 62, 57, 58, 61, 60, 55,
55, 62, 48, 63, 58, 61, 60, 59, 57, 11, 63, 64, 48, 62, 58, 61,
60, 59, 57, 55, 64, 58, 59, 62, 65, 48, 63, 61, 60, 57, 25, 11,
24, 27, 48, 41, 25, 68, 11, 24, 27, 48, 41, 25, 69, 68, 11, 24,
27, 41, 58, 27, 69, 68, 70, 11, 48, 41, 25, 26, 27, 11, 48, 48,
73, 69, 68, 25, 48, 41, 70, 71, 64, 65, 66, 63, 62, 48, 58),
c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 13, 12, 11, 10, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 47, 46, 39, 40, 41, 42, 43, 44,
45, 49, 48, 52, 51, 50, 54, 55, 53, 56, 57, 58, 60, 59, 61,
62, 63, 66, 64, 65, 67, 69, 70, 71, 68, 72, 73, 74, 75, 76,
77, 79, 78, 82, 83, 80, 81, 87, 88, 84, 85, 86, 93, 94, 89,
90, 91, 92, 95, 96, 97, 98, 101, 100, 99, 102, 103, 104,
106, 105, 107, 108, 112, 110, 111, 109, 114, 113, 116, 115,
119, 118, 117, 121, 120, 122, 125, 124, 123, 131, 132, 133,
130, 128, 134, 135, 127, 126, 129, 136, 137, 139, 140, 138,
145, 143, 142, 141, 144, 148, 147, 149, 146, 150, 151, 152,
153, 158, 157, 154, 156, 155, 164, 162, 159, 163, 160, 161,
166, 165, 168, 174, 170, 171, 167, 173, 172, 169, 184, 177,
175, 183, 179, 182, 181, 180, 176, 178, 187, 194, 193, 189,
192, 191, 190, 188, 185, 186, 200, 196, 197, 203, 202, 198,
201, 195, 199, 204, 206, 207, 205, 208, 210, 209, 213, 214,
211, 215, 217, 216, 212, 221, 222, 218, 223, 224, 225, 220,
219, 230, 233, 226, 232, 231, 228, 227, 229, 236, 234, 235,
237, 238, 239, 242, 244, 243, 241, 240, 245, 246, 252, 253,
251, 250, 247, 248, 249), c(0, 1, 2, 4, 5, 6, 7, 8, 9, 13,
3, 12, 11, 10, 14, 15, 16, 17, 47, 49, 52, 54, 57, 62, 66,
69, 72, 73, 75, 77, 82, 87, 93, 102, 106, 112, 114, 119,
131, 145, 184, 206, 213, 221, 230, 236, 46, 18, 19, 21, 24,
28, 33, 39, 55, 132, 20, 22, 25, 29, 34, 40, 23, 26, 30,
35, 41, 27, 31, 36, 42, 32, 37, 43, 38, 44, 45, 48, 51, 58,
64, 67, 70, 50, 53, 60, 97, 101, 116, 207, 214, 222, 56,
59, 95, 96, 98, 100, 110, 133, 205, 211, 218, 233, 242, 61,
103, 113, 118, 125, 130, 234, 63, 65, 71, 74, 104, 111, 143,
208, 215, 223, 226, 235, 105, 107, 76, 79, 83, 88, 94, 68,
78, 80, 84, 89, 81, 85, 90, 86, 91, 92, 121, 128, 99, 134,
139, 164, 210, 217, 224, 232, 244, 108, 109, 135, 140, 142,
148, 150, 153, 162, 168, 177, 187, 200, 209, 216, 231, 237,
238, 243, 252, 115, 117, 124, 127, 136, 120, 122, 123, 126,
129, 137, 138, 141, 147, 158, 159, 174, 175, 194, 144, 149,
157, 163, 170, 183, 193, 204, 146, 151, 154, 160, 171, 179,
189, 196, 225, 253, 152, 156, 161, 167, 182, 192, 197, 155,
166, 173, 181, 191, 203, 165, 172, 180, 190, 202, 169, 176,
188, 198, 251, 178, 185, 201, 250, 186, 195, 247, 199, 248,
249, 212, 220, 228, 241, 219, 227, 240, 229, 245, 246, 239
), c(0, 0, 1, 2, 4, 5, 6, 7, 8, 9, 10, 10, 14, 15, 16, 17,
18, 18, 19, 21, 24, 28, 33, 39, 48, 50, 53, 57, 62, 64, 67,
68, 72, 73, 75, 77, 80, 84, 89, 95, 96, 97, 99, 102, 105,
107, 108, 108, 109, 113, 115, 117, 120, 122, 123, 126, 136,
138, 141, 146, 150, 153, 159, 167, 175, 185, 195, 204, 205,
211, 218, 226, 234, 237, 238, 240, 247, 254), c(0, 10, 10,
12, 13, 13, 13, 13, 13, 13, 13, 14, 46, 47, 47, 47, 47, 56,
62, 67, 71, 74, 76, 77, 83, 92, 105, 112, 124, 126, 131,
132, 132, 132, 132, 136, 139, 141, 142, 142, 144, 144, 153,
153, 153, 153, 153, 154, 155, 173, 178, 178, 182, 182, 182,
183, 192, 192, 200, 210, 217, 223, 228, 233, 237, 240, 242,
243, 243, 247, 250, 252, 253, 253, 254, 254, 254, 254), list(
c(1, 0, 1), structure(list(), .Names = character(0)),
structure(list(id = c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
67, 68, 69, 70, 71, 72, 73, 74, 75, 76), label = c("Myriel",
"Napoleon", "MlleBaptistine", "MmeMagloire", "CountessDeLo",
"Geborand", "Champtercier", "Cravatte", "Count", "OldMan",
"Labarre", "Valjean", "Marguerite", "MmeDeR", "Isabeau",
"Gervais", "Tholomyes", "Listolier", "Fameuil", "Blacheville",
"Favourite", "Dahlia", "Zephine", "Fantine", "MmeThenardier",
"Thenardier", "Cosette", "Javert", "Fauchelevent", "Bamatabois",
"Perpetue", "Simplice", "Scaufflaire", "Woman1", "Judge",
"Champmathieu", "Brevet", "Chenildieu", "Cochepaille",
"Pontmercy", "Boulatruelle", "Eponine", "Anzelma", "Woman2",
"MotherInnocent", "Gribier", "Jondrette", "MmeBurgon",
"Gavroche", "Gillenormand", "Magnon", "MlleGillenormand",
"MmePontmercy", "MlleVaubois", "LtGillenormand", "Marius",
"BaronessT", "Mabeuf", "Enjolras", "Combeferre", "Prouvaire",
"Feuilly", "Courfeyrac", "Bahorel", "Bossuet", "Joly",
"Grantaire", "MotherPlutarch", "Gueulemer", "Babet",
"Claquesous", "Montparnasse", "Toussaint", "Child1",
"Child2", "Brujon", "MmeHucheloup"), maincharacter = c(0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0)), .Names = c("id", "label", "maincharacter"
)), structure(list(value = c(1, 8, 10, 6, 1, 1, 1, 1,
2, 1, 1, 3, 3, 5, 1, 1, 1, 1, 4, 4, 4, 4, 4, 4, 3, 3,
3, 4, 3, 3, 3, 3, 5, 3, 3, 3, 3, 4, 4, 3, 3, 3, 3, 4,
4, 4, 2, 9, 2, 7, 13, 1, 12, 4, 31, 1, 1, 17, 5, 5, 1,
1, 8, 1, 1, 1, 2, 1, 2, 3, 2, 1, 1, 2, 1, 3, 2, 3, 3,
2, 2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 1, 1,
2, 3, 2, 2, 1, 3, 1, 1, 3, 1, 2, 1, 2, 1, 1, 1, 3, 2,
1, 1, 9, 2, 2, 1, 1, 1, 2, 1, 1, 6, 12, 1, 1, 21, 19,
1, 2, 5, 4, 1, 1, 1, 1, 1, 7, 7, 6, 1, 4, 15, 5, 6, 2,
1, 4, 2, 2, 6, 2, 5, 1, 1, 9, 17, 13, 7, 2, 1, 6, 3,
5, 5, 6, 2, 4, 3, 2, 1, 5, 12, 5, 4, 10, 6, 2, 9, 1,
1, 5, 7, 3, 5, 5, 5, 2, 5, 1, 2, 3, 3, 1, 2, 2, 1, 1,
1, 1, 3, 5, 1, 1, 1, 1, 1, 6, 6, 1, 1, 2, 1, 1, 4, 4,
4, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 1, 2, 1, 1, 2,
2, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)), .Names = "value")),
<environment>), class = "igraph")
縦軸にネットワークノードの名前があり、クラスタの行が同じであることを希望しますcluster_edge_betweenness
で計算されたコミュニティの色です。
彼らはカラフルであれば、それは本当に問題ではありません:
- ノード(ラベル)またはクラスタの
- ラインまたは各クラスタの
- 背景。
重要なことは、最初のプロット(丸いノードを使用)で行うことができるように、色に基づいてクラスターを区別できることです。
どうすればいいですか?私はインターネットを検索しましたが、解決できませんでした。私は最初から問題を抱えていたdendextend package
- : は、私はこれらの2つの道路の両方を追跡しようとした
ありがとうどちらも。
(1)応答でを、私はリスト(
net
)を持っている間df
は、データフレームである、と私は正確に例のようなデータフレームに自分のネットワークを変換する方法がわかりません。 私がしようととにかく場合、私は中エラーが出る
rownames(df) <- V(net)$label
を行うには(単に再生する)row.names<-.data.frame
(*tmp*
、値=値):長さ 'row.names' 容認できないそれは
net
ネットワーク・ノードのラベルを使用しますが、df
ネットワークのものとしていない。しかし、プロットされた結果がこれです。私は非常に奇妙に思えます。(2)これは私がやったことです:
library(igraph) library(GGally) library(ggplot2) library(ggdendro) library(dendextend) library(dendextendRcpp) library(zoo) # load dataset net <- read.graph("./dataset/lesmiserables.gml", format = c("gml")) deg <- igraph::degree(net, mode = "all") comm <- fastgreedy.community(net) comm_sizesComm <- sizes(comm) comm_numComm <- length(comm_sizesComm) comm_modularity <- modularity(comm) # plot communities colorsRainbow <- rainbow(max(membership(comm)), alpha = 0.6) pdf(file = "./output/prova_comm2.pdf") plot(net, vertex.size = plotrix::rescale(deg, c(5, 16)), vertex.color = colorsRainbow[membership(comm)], vertex.frame.color = NA, vertex.label.color = "black", vertex.label.cex = 0.5, vertex.size = 10, edge.color = "#d8d8d8", layout = layout.fruchterman.reingold, edge.curved = FALSE) dev.off() # create dendrogram dend <- as.dendrogram(comm) cut <- comm_numComm # change labels dend <- dend %>% set("labels", V(net)$label) # change label dend <- dend %>% set("labels_col", "black") # change color dend <- dend %>% set("labels_cex", .5) # change size # color label based on communities colorsRainbow <- rainbow(max(membership(comm)), alpha = 1) dend <- dend %>% set("labels_col", value = colorsRainbow, k = cut) # plot dendrogram pdf(file = "./output/prova_dend2.pdf") plot(dend, horiz = TRUE, main = "Dendrogram") dev.off()
を私はラベルを変更し、それらを着色するsucced。 しかし、2つのグラフの色が一致しません。プロットや樹状図の作成に問題があるかどうかはわかりません。
を説明:最初のプロット(点で表されるノードを有するもの)で をI青色コミュニティ内のノード{パーペチュアル、Fantine、Anzelma、Simplice、...}が存在することがあります。イエローのコミュニティには{Woman2、Marius、Magnon、Cosette、...}があります。今、私は2番目のプロット(系統樹)を見に行く場合は
は、私がWoman2とAnzelmaノードが2つの異なる地域であることがわかります。 それは大きな問題のようで、私はどのように解決し始めるべきか分かりません。
(3)私も試してみました:
ggd1 <- as.ggdend(dend) ggplot(ggd1)
を、問題は(2)と同じである:地域社会が一致していません。
私はこの単純なグラフ作成:
> dput(net) structure(list(16, FALSE, c(1, 2, 3, 2, 3, 3, 4, 5, 5, 7, 7, 9, 8, 10, 9, 11, 11, 14, 15, 15, 15, 12, 14), c(0, 0, 0, 1, 2, 1, 3, 3, 4, 3, 6, 6, 7, 8, 8, 8, 10, 11, 14, 13, 12, 3, 1), c(0, 1, 3, 2, 5, 4, 6, 7, 8, 9, 10, 12, 11, 14, 13, 15, 16, 21, 22, 17, 20, 19, 18), c(0, 1, 2, 3, 5, 22, 4, 6, 7, 9, 21, 8, 10, 11, 12, 14, 13, 15, 16, 17, 20, 19, 18), c(0, 0, 1, 3, 6, 7, 9, 9, 11, 12, 14, 15, 17, 18, 18, 20, 23), c(0, 3, 6, 7, 11, 12, 12, 14, 15, 18, 18, 19, 20, 21, 22, 23, 23), list(c(1, 0, 1), structure(list(), .Names = character(0)), structure(list( id = c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15), label = c("A", "B", "C", "D", "E", "F", "G", "H", "I", "L", "M", "N", "O", "P", "Q", "R")), .Names = c("id", "label" )), list()), <environment>), class = "igraph")
をしてから、私はコミュニティや樹形図を見つける:
# calculate degree deg <- igraph::degree(net, mode = "all") # find communities com <- cluster_edge_betweenness(net) ## or use # com <- fastgreedy.community(net) # details on communities com_sizesCom <- sizes(com) com_numCom <- length(com_sizesCom) # create dendrogram dend <- as.dendrogram(com) labels(dend) <- V(net)$label[order.dendrogram(dend)] k <- max(membership(com)) colorsRainbow <- rainbow(k, alpha = 1) set.seed(23420) colorsRainbow <- rainbow(max(membership(com))) colorsRainbow <- sample(colorsRainbow) dend <- dend %>% set("labels_col", value = colorsRainbow, k = k) dend <- dend %>% set("branches_k_color", value = colorsRainbow, k = k) dend <- dend %>% set("labels_cex", 1)
色が正しくありません。
完全なコードです。青と緑が切り替わります。
library(igraph) library(dendextend) library(colorspace) net <- upgrade_graph(net) # dput(net) # calculate degree deg <- igraph::degree(net, mode = "all") # plot network x11() plot(net, vertex.size = plotrix::rescale(deg, c(8, 22)), vertex.color = "tomato", vertex.frame.color = NA, vertex.label.color = "black", vertex.size = 10, edge.color = "#d8d8d8", layout = layout.fruchterman.reingold, edge.curved = FALSE) # find communities com <- cluster_edge_betweenness(net) # details on communities com_sizesCom <- sizes(com) com_numCom <- length(com_sizesCom) print(com_numCom) # plot communities colorsRainbow <- rainbow(max(membership(com)), alpha = 0.6) x11() par(mar = c(1, 1, 1, 1)) plot(net, vertex.size = plotrix::rescale(deg, c(8, 22)), vertex.color = colorsRainbow[membership(com)], vertex.frame.color = NA, edge.color = "#d8d8d8", vertex.label.color = "black", layout = layout.fruchterman.reingold, edge.curved = FALSE) # create dendrogram dend <- as.dendrogram(com) labels(dend) <- V(net)$label[order.dendrogram(dend)] k <- max(membership(com)) colorsRainbow <- rainbow(k, alpha = 1) colorsRainbow <- rev(unique(colorsRainbow[membership(com)[order.dendrogram(dend)]])) dend <- dend %>% set("labels_col", value = colorsRainbow, k = k) dend <- dend %>% set("branches_k_color", value = colorsRainbow, k = k) dend <- dend %>% set("labels_cex", 1) # plot dendrogram x11() par(mar = c(3, 1, 1, 5)) plot(dend, horiz = T)
あなたは[dendextendパッケージ](https://cran.r-project.org/web/packages/dendextend/を見たことがありますvignettes/introduction.html)。また、いくつかの色の樹状図[here](http://stackoverflow.com/questions/21474388/colorize-clusters-in-dendogram-with-ggplot2) –
こんにちは@ marielle、あなたは(簡単に)ggdendroで色を追加することはできません。これは、dendextendパッケージのggdendオブジェクトの動機付けでした。 –
@SandyMusprattありがとう、私はメインメッセージを編集する、私はあなたが私を助けることを願っています。 – marielle