1

ggdendroプロットにラベルを追加するにはどうすればよいですか??dendro_dataを読んだところ、「labels」という呼び出しを使用することになっていることがわかりましたが、実際の実装の例を見つけることができません。以下の例に葉のラベルを追加する方法を誰かに教えてもらえますか。ありがとうございました

require(ggplot2)

hc <- hclust(dist(USArrests), "ave")
dhc <- as.dendrogram(hc,hang=0.1)
ddata <- dendro_data(dhc, type="rectangle")
ggplot(segment(ddata)) + geom_segment(aes(x=x, y=y, xend=xend, yend=yend))
4

2 に答える 2

2

geom_text()によって生成されたデータフレームを使用するを呼び出すと、リーフラベルを追加できますlabel(ddata)scale_y_continuousまた、ラベルがカットオフされないように、を使用してプロット範囲を拡張しました。

p <- ggplot(segment(ddata)) + geom_segment(aes(x=x, y=y, xend=xend, yend=yend))
p + geom_text(aes(x = x, y = y, label = label, angle = -90, hjust = 0), data= label(ddata)) +
  scale_y_continuous(expand = c(0.3, 0))

ただし、ggdendrogram()これらのラベルの表示方法が気に入らない場合を除いて、使用することをお勧めします。

ggdendrogram(ddata)
于 2012-09-28T03:02:28.627 に答える
0

以下を適用することで、かなりの労力をかけずに、ggdendroにぶら下がっている樹状図をプロットすることができました。葉の位置も含むラベルのデータフレームを作成する必要があります。これは、整数のみを取るようにポイントを除外することによって行われます。

# tree is a an extracted dendro_data() object.
label_data <- bind_cols(filter(segment(tree), x == xend & x%%1 == 0), label(tree))

ggplot() + 
geom_segment(data=segment(tree), aes(x=x, y=y, xend=xend, yend=yend)) +
geom_text(data=label_data, aes(x=xend, y=yend, label=label, hjust=0, color = LT), size=2) +
coord_flip() + 
scale_y_reverse(expand=c(0.2, 0)) +
theme_bw() +
theme(panel.border = element_blank(),
      panel.grid.major = element_blank(), 
      panel.grid.minor = element_blank(),
      axis.line = element_blank(),
      axis.title = element_blank(),
      axis.text = element_blank(),
      axis.ticks = element_blank(),
      legend.position = "None") 
于 2015-09-28T20:39:53.347 に答える