15

ggplot2 を使用してヒート マップを作成しようとしています。this exampleを見つけました。これは基本的に自分のデータで複製しようとしていますが、問題があります。私のデータは、次のような単純な .csv ファイルです。

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

X 軸に果物の名前、Y 軸に人物を示す単純なヒート マップを作成したいと思います。グラフは、各正方形の色が消費された果物の数を表す正方形を表す必要があります。に対応する正方形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で取得している現在の出力は次のようになります。

ここに画像の説明を入力

4

2 に答える 2

33

正直なところ、@ dr.bunsen-上記の例は再現性が低く、リンクしたチュートリアルの最初の部分を読んでいませんでした。これがおそらくあなたが探しているものです:

 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")

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

于 2011-12-06T21:00:41.523 に答える