R heatmap新手:情节对计数

时间:2016-01-12 12:03:00

标签: r plot heatmap

我需要创建一个显示不同(charCount,wordCount)对数的热图(其中charCount是多个字符,wordCount是文本摘要中的多个单词)。 作为输入,我有一个csv文件,其中每行有两个数字:charCountwordCount。我可以将其读入矩阵,然后绘制热图:

data = read.csv("chars_words.txt", sep=",", header=FALSE)
mtx <- as.matrix(data)
heatmap(mtx)

但是对于以下数据:

charCount, wordCount
1000,100
1000,100
1000,100
900,90
800,80
700,70
600,60
500,50
300,30
200,20
100,10​

我只得到两种颜色的情节。如何创建一个用颜色显示不同(charCount,wordCount)对数的图?

***更新2:

moto的代码解决了我的问题:

library(ggplot2)
library(dplyr)

# Convert your data into frequency matrix, then data.frame
df<-data.frame(table(data))

# Set columns ready for ggplot
df$Freq<-as.factor(df$Freq)
df$charCount<-as.character(df$charCount) %>% as.numeric()
df$wordCount<-as.character(df$wordCount) %>% as.numeric()

# plot using ggplot
ggplot(df,aes(x=charCount,y=wordCount)) +
geom_tile(aes(fill=Freq)) +
geom_text(aes(label=Freq))

这会产生一个很好的情节(示例数据,而不是来自原始任务):

Pair Distribution

1 个答案:

答案 0 :(得分:3)

<强>更新

不完全确定您是如何使用heatmap()函数执行此操作的,但此ggplot方法可能对您有用:

library(ggplot2)
library(dplyr)

# Convert your data into frequency matrix, then data.frame
df<-data.frame(table(data))

# Set columns ready for ggplot
df$Freq<-as.factor(df$Freq)
df$charCount<-as.character(df$charCount) %>% as.numeric()
df$wordCount<-as.character(df$wordCount) %>% as.numeric()

# plot using ggplot
ggplot(df,aes(x=charCount,y=wordCount)) +
    geom_tile(aes(fill=Freq)) +
    geom_text(aes(label=Freq))

如果您想自定义颜色等,可以向ggplot行添加其他参数。