[未知用户] 基本上差不多,就是地图的数据,还有城市名称等地方需要更新。
[未知用户] 请问我如何获取该省的地图数据?
我不知道去哪里能够下载到数据.
谢谢!
[未知用户] 谢谢!

在gadm中下载了china的shapefile压缩文件,
解压后把后缀为.shp/.dbf及相应同名的SHX文件放入getwd()中,
运行下面这段code,
提示: 错误于colIndex + 1 : 二进列运算符中有非数值参数.

是因为省名是汉字导致该错误?
还是因为其他原因?
请高手帮忙查看一下,
谢谢!

我初学R,
又需要绘制一幅某省的各地市某事件频数分布地图.






library(maps)
library(mapdata)
map("china")
library(maptools)
x=readShapePoly("CHN_adm3.shp")
plot(x)
plot(x,col=gray(924:0/924))
#####全国地图中突出显示湖北
getColor=function(mapdata,provname,provcol,othercol)
{
f=function(x,y) ifelse(x %in% y, which(y==x),0)
colIndex=sapply(mapdata@data$NAME,f,provname)
col=c(othercol,provcol)[colIndex+1]
return(col)
}

provname=c("湖北省")
provcol=c("red")
plot(x,col=getColor(x,provname,provcol,"white"))
错误于colIndex + 1 : 二进列运算符中有非数值参数
[未知用户] 这个数据是包含了城市的,直接用原来的代码肯定不行。如果时间允许的话我想重新整理一篇地图绘制的文章,只是可能得等一段时间了。
[未知用户] 哦,
期待中...

现在关键是不知道有城市的shapefile的3个文件转化成我需要的分布地图的思路,
又是初学,
所以不知从何下手.
[未知用户] 这个gadm.org网站太牛了,谢谢!
[未知用户] 最强悍的一点是它直接提供RData格式的数据,在R里load()一下就进去了。
1 个月 后
以前曾经画过这类图,没有用上述统计包,具体思路是这样的:
(1)准备要画的底图,用别的计算机语言编程(或许R语言也有类似的包吧),提取出需要的底图区域的像素值,并保存到数据库中;
(2)在R中,按照提取的底图的比例建立绘图区(如果比例不一致,可能会变形),读取数据库中保存的像素值并绘制出来;
(3)在底图上绘制需要的图形。
这样不仅可以画分省的,还可以画一个市的、一个县的。。。随你怎么画。
5 天 后
[未知用户] 最大的问题是x@data结果的925行和33行name都完全乱码,可能是R识别不了中文所致? 用的MAC版本.谢谢!
24 天 后
我想问一下地图绘制出来之后希望添加一个colorbar用以表示不同的数值,如何添加?谢谢!
5 个月 后
请问能不能在部分省份上标注该省的环境信息如:海拔、年平均气温、年均降水量、年平均光照强度、水质溶氧量、PH值、平均水温、河床比降、水流速、矿化度、硬度等信息,我要做一个物种在各省的分布情况及该省的环境参数,该怎么实现,谢谢
3 个月 后
非常感谢这篇文章!如果数据更多,比如在一个excel表格里,如何把这个excel和R的地图功能联系在一起,划出这种类似你文章里人口的density 图呢?谢了
3 个月 后
2 个月 后
这个软件可以自己画一个局部的地图吗(比如一个县)?可以自己添加城市吗?
对于我这种似懂非懂的人来说,写得太详细了。
太好了,非常感谢。
3 个月 后
[未知用户] 需要做些修改
colIndex=sapply(mapdata$att.data$NAME,f,provname);
改成
colIndex=sapply(mapdata$NAME,f,provname);
1 个月 后
i was going to use it to get Australian map, somehow there is no maptools in my latest version R. can anyone please offer me some help?

cheers.
tilly
[未知用户] 1. Do you have the shapefile(*.shp) of Australian map?
2. Have you installed maptools package in R? Try install.packages("maptools")?
[未知用户] hi, 邱怡轩,
Yes, i have, i have successfully loaded shx file of Australian map:
> getColor=function(mapdata,provname,provcol,othercol)
+ {
+     f=function(x,y) ifelse(x %in% y,which(y==x),0);
+     colIndex=sapply(mapdata$att.data$NAME,f,provname);
+     col=c(othercol,provcol)[colIndex+1];
+     return(col);
+ }
> 
> 
> provname=c("Canberra")
> provcol=c("red")
> plot(ozDATA,col=getColor(ozDATA,provname,provcol,"White"))
Error in colIndex + 1 : non-numeric argument to binary operator
see the Error msg above, why is that?