热力图是个很直观的数据展现方法,从低温的白到高温的红,代表不同数值的高低或者聚集度。在R语言中,一个heatmap语句就可以表现了。
library(openxlsx);readFilePath<-"E:/land.xlsx"
mydata<-read.xlsx(readFilePath,"Sheet1")
这儿找到是2016年11月北上广深等几大城市的供地面积,成交价格以及楼面价格。
数据来源:http://fdc.fang.com/data/land/
然后写下heatmap语句,连包都不用加载:
heatmap(as.matrix(mydata),Rowv=NA,Colv=NA,
col=heat.colors(256),scale="column",margin=c(3,6))
colors(256)里的数值可调,不过区别也不会很大,margin是每个格子的长宽。
因为楼面价=总地价除以(面积x容积率),所以表格中的总地价单位是万元,楼面价的单位是元。另外地块的数值也和楼面价的数值相差很大,我很好奇如果让变量标准化一点,图形会怎样,所以用了scale函数。基本语句与《R语言实战》第5章,P96一样,连变量名都懒得改了。
z<-scale(mydata[,1:3])
得图如下:其实前三列是和上一幅差不多的。
值得注意的有两处,一处是第5行的area,两张图都是空白的,看回原表格,是重庆的供地大大超过其他城市,大概是太逆天所以无法比较了吧。
另一处是加了比例后的第4行深圳,11月不知道拍了哪里的地,地价和楼面价也是超低,导致scale计算出来的均值突出(虽然是负数)。热力图对于负值的反应,还真是有意思。
如果把热力图和地图结合起来,可以看的更直观些,这就要靠我继续努力了!
其他的书籍和课程中,还有安装"pheatmap"包,或者利用layout-image(x,y,z)的方法。但那些我还没能利用自己的数据做出来,想show也不能够啦。
小白作业,欢迎指教。