2

私は ggdendrogram を使用してデンドログラムをプロットしていますが、グラフをより直感的にするために左側にラベルを付けたいと考えています。どうすればいいですか?ありがとう!!!

library(ggplot2)
library(ggdendro)

### Data
countries <- c("UK","AU","SA","CH")
distmatrix <- matrix(c(0.00, 0.16, 1.01, 0.97, 0.16, 0.00, 0.84, 0.79, 1.01, 0.84, 0.00, 1.49, 0.97, 0.79, 1.49, 0.00),
nrow=4,dimnames=list(countries, countries))

### Cluster
hc = hclust(as.dist(distmatrix), method = "ward")

### Plot
ggdendrogram(hc, rotate=TRUE, theme_dendro=FALSE)
4

1 に答える 1

4

ポイントは、コードggdendrogramがいつrotate=TRUEこれを行うかということです:

if (rotate) {
    p <- p + coord_flip()
    p <- p + scale_y_reverse(expand = c(0.2, 0))
}

しかし、あなたはそれをしたくありませんscale_y_reverse(.)。したがって、1 つの方法は、coord_flip()自分で行うことです。

ggdendrogram(hc, rotate=FALSE, theme_dendro=FALSE) + coord_flip()

しかし、明らかな問題の 1 つは、 がlabels適切に正当化されないことです。また、外部からの設定やプロパティggdendrogram()が許可されていないため、関数内で多くのことを行うことはできません。hjustangle

ggplot()したがって、関数内から行をコピーして自分で作成することをお勧めしますggdendrogram

data <- dendro_data(hc)
p <- ggplot() + geom_segment(data = segment(data), 
              aes_string(x = "x", y = "y", xend = "xend", yend = "yend"))
p <- p + geom_text(data = label(data), 
              aes_string(x = "x", y = "y", label = "label"), hjust = 1, angle = 0)
p + scale_y_continuous(expand=c(0.2, 0)) + coord_flip()

これは与える:

ここに画像の説明を入力

もう 1 つの方法は、ggdendrogram必要に応じて関数を変更し、再コンパイルすることです。このようにする方がはるかに簡単で、あなたが望むものでもあると思います:

于 2013-04-28T11:58:24.007 に答える