如何使用ggplot2生成热图?

drb*_*sen 14 r heatmap ggplot2

我正在尝试使用ggplot2生成热图.我找到了这个例子,我基本上试图用我的数据复制,但我遇到了困难.我的数据是一个简单的.csv文件,如下所示:

people,apple,orange,peach
mike,1,0,6
sue,0,0,1
bill,3,3,1
ted,1,1,0
Run Code Online (Sandbox Code Playgroud)

我想制作一个简单的热图,其中水果的名称在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"))
Run Code Online (Sandbox Code Playgroud)

当我绘制这些数据时,我得到x轴上的水果数和y轴上的人.我也没有得到代表水果数量的颜色渐变.如何在x轴上获取水果的名称,并将人们吃掉的水果数量显示为热图?我在R中获得的当前输出如下所示:

在此输入图像描述

Gee*_*cid 32

老实说@ 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")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述