2011-12-06 10 views
13

私はggplot2を使ってヒートマップを作成しようとしています。私はthis exampleを見つけましたが、これは本質的に私のデータを複製しようとしていますが、難しかったです。ggplot2でヒートマップを作成する方法は?

people,apple,orange,peach 
mike,1,0,6 
sue,0,0,1 
bill,3,3,1 
ted,1,1,0 

私は果物の名前はx軸上にあり、人がy軸上にある簡単なヒートマップを作成したいと思います:私のデータは、このようになりますシンプルな.csvファイルであります。グラフには四角形が描かれていなければなりません。各四角形の色は消費された果物の数です。 mike:peachに対応する四角形は、最も暗くなるはずです。

data <- read.csv("/Users/bunsen/Desktop/fruit.txt", head=TRUE, sep=",") 
fruit <- c(apple,orange,peach) 
people <- data[,1] 
(p <- ggplot(data, aes(fruit, people)) + geom_tile(aes(fill = rescale), colour = "white") + scale_fill_gradient(low = "white", high = "steelblue")) 

を私はx軸とy軸上の人々の果実の数を取得し、このデータをプロットする場合:ここで

は私がヒートマップを作成しようとする使用していたコードです。果物の数を表す色のグラデーションも得られません。ヒートマップとして表示された人が食べた果物の数で、x軸上の果物の名前を取得するにはどうすればよいですか?私はRに取得しています 電流出力は次のようになります。dr.bunsen @正直に言うと

enter image description here

答えて

30

- 上記のあなたの例では不十分再現可能だったとあなたはチュートリアルの最初の部分を読んでいませんlinked。ここではあなたが探しているものはおそらくです:

library(reshape) 
library(ggplot2) 
library(scales) 

data <- structure(list(people = structure(c(2L, 3L, 1L, 4L), 
              .Label = c("bill", "mike", "sue", "ted"), 
              class = "factor"), 
         apple = c(1L, 0L, 3L, 1L), 
         orange = c(0L, 0L, 3L, 1L), 
         peach = c(6L, 1L, 1L, 0L)), 
        .Names = c("people", "apple", "orange", "peach"), 
        class = "data.frame", 
        row.names = c(NA, -4L)) 
data.m <- melt(data) 
data.m <- ddply(data.m, .(variable), transform, rescale = rescale(value)) 
p <- ggplot(data.m, aes(variable, people)) + 
     geom_tile(aes(fill = rescale), colour = "white") 
p + scale_fill_gradient(low = "white", high = "steelblue") 

enter image description here

+0

@GeekOnAcid私は元の質問内のデータと上記のコードを実行しようとしたが、それは失敗しました:再スケール(値)でエラー:使用法:rescale(x、newrange)xは数値オブジェクトで、newrangeは新しいminとmaxです。どうしたの? – Ali

+1

@AliSharifiはい、そうです。 'ggplot2'や' recale'機能を削除した他のパッケージや、他の機能にシフトされたパッケージには何らかの変更があったに違いありません。あなたが必要とするのは、最小と最大を指定するために数値ベクトルを再スケーリングする 'scales'パッケージから' rescale'を使うことです。完全に再現できるようにコードを更新しました。 –

+0

@GeekOnAcid完璧! – Ali

関連する問題