2011-09-14 175 views
1

我有一个混淆矩阵,使得:如何使用R中的热图来绘制混淆矩阵?

a b c d e f g h i j 
a 5 4 0 0 0 0 0 0 0 0 
b 0 0 0 0 0 0 0 0 0 0 
c 0 0 4 0 0 0 0 0 0 0 
d 0 0 0 0 0 0 0 0 0 0 
e 2 0 0 0 2 0 0 0 0 0 
f 1 0 0 0 0 2 0 0 0 0 
g 0 0 0 0 0 0 0 0 0 0 
h 0 0 0 0 0 0 0 0 0 0 
i 0 0 0 0 0 0 0 0 0 0 
j 0 0 0 0 0 0 0 0 0 0 

其中字母表示类别标签。

我只需要绘制混淆矩阵。我搜索了几个工具。 R中的热映像看起来像我所需要的。由于我对R无所知,因此很难对样本进行更改。如果有人能够很快帮助我如何画画,我会非常感激。或者任何其他建议,而不是热点地图也是受欢迎的。 我知道有很多这方面的例子,但仍然无法用我自己的数据绘制。

回答

2

由于格雷格提到,image可能是要走的路:你可能也想看看heatmap功能

z = c(5,4,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,4,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
2,0,0,0,2,0,0,0,0,0, 
1,0,0,0,0,2,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0, 
0,0,0,0,0,0,0,0,0,0) 

z = matrix(z, ncol=10) 
colnames(z) = c("a","b","c","d","e","f","g","h","i", "j") 
rownames(z) = c("a","b","c","d","e","f","g","h","i", "j") 

##To get the correct image plot rotation 
##We need to flip the plot 
image(z[,ncol(z):1], axes=FALSE) 

##Add in the y-axis labels. Similar idea for x-axis. 
axis(2, at = seq(0, 1, length=length(colnames(z))), labels=colnames(z)) 

heatmap(t(z)[ncol(z):1,], Rowv=NA, 
       Colv=NA, col = heat.colors(256)) 
+0

非常感谢!而一个更快速的问题,我怎样才能把列和行名称上的情节,而不是值从0到1? – Burcu

1

在R中image功能将采取的矩阵并绘制与基于在所述矩阵中的值的颜色的规则网格。你可以设置很多选项,但只是用矩阵调用图像作为唯一的参数会创建一个基本图。听起来就像是一个开始的好地方。

+0

是的,它的工作原理,并为您很简单也说。非常感谢你。 – Burcu

+0

图像也可以绘制直线网格 – mdsumner