【发布时间】:2015-11-04 15:30:41
【问题描述】:
我的死亡率数据有两种格式,一种是您从人类死亡率数据库中获得的列表形式,男性、女性和综合数据都在列中。另一种格式分为男性和女性矩阵,每个矩阵中只有年龄、年份和死亡率。
第一种格式类似于
Year Age Female Male Total
1961 99 0.3 0.4 0.3
1961 98 0.4 0.5 0.4
等等。
我分离出来获取数据的第二种格式是:
Age 1961 1962 1963 .....
0 0.02 0.02 0.02 ...
1 0.002 0.002 0.002....
等等。
我希望能够绘制热图,以便查看队列效应等。
我尝试了通过在线搜索找到的各种方法,但这些方法不适用于我的数据呈现方式。我制作的热图完全是红色的。有人可以帮忙吗?
我试过这个:
rnames <- France[,1] #assign labels in column 1 to "rnames"
mat_data <- data.matrix(France[,2:ncol(France)])
rownames(mat_data) <- rnames #assign row names
col_breaks = c(seq(-1,0,length=100), # for red
seq(0,0.8,length=100), # for yellow
seq(0.8,1,length=100)) # for green
my_palette <- colorRampPalette(c("red", "yellow", "green"))(n = 299)
png("location", # create PNG for the heat map
width = 5*300, # 5 x 300 pixels
height = 5*300,
res = 300, # 300 pixels per inch
pointsize = 8) # smaller font size
heatmap.2(mat_data,
cellnote=mat_data,
main="Correlation",
notecol="black",
trace="none",
margins =c(12,9),
col=my_palette,
breaks=col_breaks,
dendrogram="row",
Colv="NA")
dev.off()
这会创建一个纯红色热图,底部列出年份,然后是年份旁边的单词 Age,然后是 y 轴列出的实际年龄。它还给了我一个错误代码:
Error in seq.default(min.raw, max.raw, by = min(diff(breaks)/4)) :
invalid (to - from)/by in seq(.)
有谁知道生成热图的更好方法或我在这里做错了什么?
【问题讨论】:
-
请阅读How to Ask 以及如何创建reproducible example in R。这包括(一些)数据,最好是调用 dput 的输出,以及您自己的代码。
-
@Heroka 我不确定要包含什么,因为我尝试过的所有代码都很长并且失败了这么多?
-
我们至少需要查看数据示例以及您尝试过的内容。如果事情失败了,我们需要看看错误在哪里以及是什么。
-
@Emma 至少需要一些数据。如果您已经尝试过很多代码,您当然不需要发布所有代码,但也许是最近一次尝试?
-
@Emma 你也可以发布模拟数据,如果版权是一个问题。如果这样做,请确保类型/变量名称匹配。