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)