[未知用户] 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?
[未知用户] As I mentioned in the article, some functions have been changed with the new version of maptools package, and your code should be modified as
> 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("Canberra")
> provcol=c("red")
> plot(ozDATA,col=getColor(ozDATA,provname,provcol,"White"))
Hope this works for you.
[未知用户] hi, 邱怡轩,

after ran second slot, below is the error msg i have got.

Error: unexpected '}' in:
" + return(col);
+ }"

Sorry for being a pain.

Cheers,
Tilly
[未知用户] Seems like you copied the plus sign into R also. Remove "+" in the beginning of each line.
15 天 后
[未知用户] getColor()按照要求修改了,但是还是显示“graphical parameter "fg" has the wrong length”。是什么原因?
7 天 后
R画世界地图的话,数据去哪找呢?
13 天 后
(bou2_4p.dbf、bou2_4p.shp和bou2_4p.shx),将这三个文件解压到同一个目录下,并在R中设好相应的工作空间

你好 我还是不明白这个是怎么设相应工作空间 你能说下具体的位置吗
谢谢
10 天 后
[未知用户] map("world")就可以了
[未知用户] setwd("/your/work/directory")
请教两个问题:
1.如何在省界的地图中加上地级市的边界。我能分别画出有省界的地图,和地级市界的线,但是不知到怎么重叠在一起,并对部分城市着色

2. 如何解决在ubuntu下地图信息文件中,中文的省名不能识别乱码? 我在win7不用设置GB2312就可以识别中文省名,但在ubuntu11.10下即使设置GB2312还是不能正常显示
[未知用户] 对于中文显示问题,暂时找到一个方法
将getColor函数稍作修改:colIndex=sapply(chinamap@data$NAME,f,cityname); 改为colIndex=sapply(iconv(chinamap@data$NAME,from="CP936", to="UTF-8"),f,cityname);
这样可以暂时显示中文省名并着色
6 天 后
向您请教一个问题:我想在这幅地图上标上省名,位置尽量不重合,省名是我自己写的(北京,天津,而不是文件中的“北京市”,"天津市"),请问怎么做呢?
getColor=function(mapdata,provname,provcol,othercol)
+ {
+ f=function(x,z)
+ ifelse(x%in%z,which(z==x),0)
+ colIndex=sapply(mapdata@data$NAME,f,provname)
+ col=c(othercol,provcol)[colIndex+1]
+ return(col)
+ }
> provname=("武汉市")
> provcol=("blue")
> plot(x,col=getColor(x,provname,provcol,"white"))
错误于colIndex + 1 : 二进列运算符中有非数值参数
> provname=c("北京市","天津市","上海市","重庆市");
> provcol=c("red","green","yellow","purple");
> plot(x,fg=getColor(x,provname,provcol,"white"));
错误于colIndex + 1 : 二进列运算符中有非数值参数
>
老师。这个错误是为什么呢?求解答。
等待您的回复。
22 天 后
[未知用户] 同问
可以用正则表达式吗??
[未知用户] 这个地图是用省边界绘制的,武汉市应该画不出来,网上有市边界的数据包。
plot(x,fg=getColor(x,provname,provcol,”white”));
应该是plot(x,col=getColor(x,provname,provcol,”white”))吧,fg改为col试试~
6 天 后
这个中国地图能用ggplot2画吗?貌似x的对象类型很难转化成数据框
20 天 后
[未知用户] 终于搞明白了,用fortify函数可以转化成数据框