我需要创建一个显示不同(charCount,wordCount)对数的热图(其中charCount
是多个字符,wordCount
是文本摘要中的多个单词)。
作为输入,我有一个csv文件,其中每行有两个数字:charCount
和wordCount
。我可以将其读入矩阵,然后绘制热图:
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))
这会产生一个很好的情节(示例数据,而不是来自原始任务):
答案 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行添加其他参数。