0

いくつかの遺伝子発現値のヒートマップをプロットする必要があります。つまり、ヒートマップの各行は 10 個の遺伝子の平均を表し、次のようになります。

  • 行 1 --> mean_genes[1:10]
  • 行 2 --> mean_genes[11:20]
  • 行 3 --> mean_genes[21:30].

ここまでは、関数 heatmap を知っているので問題ありません。しかし、ヒートマップでは、一度に 1 つの遺伝子の発現値の行ごとに (線で) 分布をプロットする必要があります。

  • 行 1 --> gene_expression[1]
  • 行 2 --> gene_expression[11]
  • 行 3 --> gene_expression[31].

最後に、10個の遺伝子のグループの発現値を行ごとにチェックし、目的の遺伝子の発現値も比較して(目で)実行したいため、すべての行についてなどです。しかし、そのような複雑なプロットを作成する方法についてはまったくわかりません。

それについて何か提案はありますか?

4

1 に答える 1

1

サンプルデータがないと何を求めているのかを確認するのは少し難しいですが、次のように ggplot2 と geom_tile() プロットを使用したものかもしれません (きれいに仕上げられていないことをお詫びしますが、いじることができます)。

## LIBRARY (must be installed)
require(ggplot2)
require(plyr)

## CREATE THE GENEMAP DATA
geneMap<-data.frame(1:100,expand.grid(1:10,1:10),rnorm(100,6,2))
colnames(geneMap)<-c("ID","X","Y","expr")

## APPEND THE ROWMEANS TO EACH ITEM
rowMean<-ddply(geneMap, "X" ,function(df)mean(df$expr))
geneMap<-merge(geneMap,rowMean,by="X")
colnames(geneMap)<-c("X","ID","Y","expr","rMean")

## CREATE A BASIC TILE WITH FILLED ROWS (FILL BY MEAN, ALPHA BY VALUE)
hmap<-ggplot(data=geneMap, aes(x=X,y=Y)) +        # Basic Plot
      theme_bw() +                                # Basic Theme
      geom_tile(aes(fill=rMean)) +                # Fill the tile by mean
      scale_x_continuous( breaks = 1:10,1) +      # Force ticks 1-10 on x axis
      scale_y_continuous( breaks = 1:10,1) +      # Force ticks 1-10 ony axis
      scale_fill_gradient(low="yellow", high="orange")   # Color the heatmap

hmap <- hmap + annotate("text", x = geneMap$X, y = geneMap$Y, 
                        label = round(geneMap$expr,2))  # Label each point with value

meanSummary<-unique(geneMap[,c("X","rMean")])     # Pull out the means for each row
origSummary<-geneMap[geneMap$Y==1,]               # Pull out the original "seed" vals for each row

hmap<- hmap + annotate("text", x = meanSummary$X, 
                       y = max(geneMap$Y)+1, 
                       label = round(meanSummary$rMean,2)) # Add the mean labels at row end
hmap<- hmap + annotate("text", x = min(geneMap$Y)-1,
                       y = max(geneMap$Y)+1, label = "MEANS") # Label the row

hmap<- hmap + geom_line(aes(x=origSummary$X, 
                            y=origSummary$expr*(max(origSummary$X)/max(origSummary$expr)),
                            size=3, alpha=0.6))   # Add the line plot

# Draw the map & flip is so the rows run horizontally (or not!)
hmap + coord_flip()
于 2013-11-15T06:08:49.797 に答える