转:http://site.douban.com/182577/widget/notes/10567181/note/262669861/
全国大学生数学建模竞赛2011A。插值。
题目和数据:第一问是讨论8种重金属元素在城区的空间分布,并分析不同区域的污染程度。描述空间分布比较好的方式是把这个空间以图形的方式展示出来。对整个城区面积来说,300多个采样点的数据过少,可用插值拟合的方法获得各重金属污染物浓度的空间分布。再参考由背景值确定的阈值,定量分析城区各区域的污染程度。由于空间数据是不规则的,较好的方法是用散乱数据插值,线性插值的效果不好。下面采用kriging插值:。mum<-read.csv('mum2011.csv')#把数据附件1,2合并,存为mum2011.csvlibrary(kriging)kriged <- kriging(mum$x, mum$y, mum$hight, pixels=100)#对海拔进行差值map<-kriged$maplibrary(ggplot2)v <- ggplot(map, aes(x, y, z = pred))#绘制海拔图,在其上标识功能区,pred是海拔插值的结果v + geom_tile(aes(fill = pred))+stat_contour(binwidth = 20)+scale_fill_gradientn(colours=c('darkgreen','green','orange','yellow','white'))+annotate("text",x=mum$x,y=mum$y,label=mum$area)功能区分别是1 生活区2 工业区3 山区4 交通区5 公园绿地区krigedcu <- kriging(mum$x, mum$y, mum$Cu, pixels=100)#对铜的浓度插值mapcu<-krigedcu$mapv <- ggplot(mapcu, aes(x, y, z = pred))#绘铜的浓度图v + geom_tile(aes(fill = pred))+stat_contour(binwidth = 100)+scale_fill_gradientn(colours=c('blue','green','orange','yellow','red'))+annotate("text",x=mum$x,y=mum$y,label=mum$area)
其他重金属类似作图即可。结合海拔和功能区,不难描述污染的情况。R里边常用的绘制等高线图的函数是contour( ),这个函数要求坐标x,y值递增,对散乱数据不合适,所以采用ggplot2来画图。