52

次のようなラティスやベースを含むさまざまなRグラフィックシステムで作成された値を持つヒートマップを見てきました。

ここに画像の説明を入力してください

私は少し使用する傾向がありggplot2、対応するセル値がプロットされたヒートマップを作成できるようにしたいと考えています。ヒートマップと使用の試みは次のgeom_textとおりです。

library(reshape2, ggplot2)
dat <- matrix(rnorm(100, 3, 1), ncol=10)
names(dat) <- paste("X", 1:10)
dat2 <- melt(dat, id.var = "X1")
p1 <- ggplot(dat2, aes(as.factor(Var1), Var2, group=Var2)) +
    geom_tile(aes(fill = value)) +
    scale_fill_gradient(low = "white", high = "red") 
p1

#attempt
labs <- c(apply(round(dat[, -2], 1), 2, as.character))
p1 +  geom_text(aes(label=labs), size=1)

通常、渡すx値とy値を把握できますが、この情報はデータセットに保存されていないため、この場合はわかりません。ヒートマップにテキストを配置するにはどうすればよいですか?

4

2 に答える 2

102

これは、tidyverseの原則に準拠し、ggplot2の不適切な使用を改善するように更新されました

SlowLeranerのコメントによると、私はこれを簡単に行うことができました。

library(tidyverse)

## make data
dat <- matrix(rnorm(100, 3, 1), ncol=10)

## reshape data (tidy/tall form)
dat2 <- dat %>%
    tbl_df() %>%
    rownames_to_column('Var1') %>%
    gather(Var2, value, -Var1) %>%
    mutate(
        Var1 = factor(Var1, levels=1:10),
        Var2 = factor(gsub("V", "", Var2), levels=1:10)
    )

## plot data
ggplot(dat2, aes(Var1, Var2)) +
    geom_tile(aes(fill = value)) + 
    geom_text(aes(label = round(value, 1))) +
    scale_fill_gradient(low = "white", high = "red") 

ここに画像の説明を入力してください

于 2013-01-12T05:55:26.100 に答える
10

値を使用してヒートマップを作成する別の簡単な方法があります。これを行うには、 pheatmapを使用できます。

dat <- matrix(rnorm(100, 3, 1), ncol=10)
names(dat) <- paste("X", 1:10)
install.packages('pheatmap') # if not installed already
library(pheatmap)
pheatmap(dat, display_numbers = T)

これはあなたにこのようなプロットを与えるでしょう

値を含むヒートマップ

クラスタリングを削除して配色を使用したい場合は、次のことができます。

pheatmap(dat, display_numbers = T, color = colorRampPalette(c('white','red'))(100), cluster_rows = F, cluster_cols = F, fontsize_number = 15)

クラスタリングと赤白の色のないヒートマップ

表示される数字のフォントサイズ、形式、色を変更することもできます。

于 2019-09-09T20:31:44.420 に答える