楼主: 天涯在何方
40188 62

[作图问题求助] 请教stata制作中国地图的命令 [推广有奖]

11
天涯在何方 发表于 2010-9-1 11:01:13
sungmoo 发表于 2010-9-1 07:03
天涯在何方 发表于 2010-8-31 20:46 不知道这个是否可以满足STATA作图的条件
*简单地话,可以直接借用2楼链接中的数据uscoord.dta与usdb.dta。再结合你的数据,可操作(设所有文件都在默认目录中):

use usdb,clear
g Market=.
replace Market=8.619 if name=="北京市"
replace Market=8.342 if name=="天津市"
replace Market=6.405 if name=="河北省"
replace Market=5.262 if name=="山西省"
replace Market=5.521 if name=="内蒙古自治区"
replace Market=7.835 if name=="辽宁省"
replace Market=5.890 if name=="吉林省"
replace Market=5.263 if name=="黑龙江省"
replace Market=10.407 if name=="上海市"
replace Market=9.065  if name=="江苏省"
replace Market=9.896  if name=="浙江省"
replace Market=6.556  if name=="安徽省"
replace Market=8.624 if name=="福建省"
replace Market=6.225 if name=="江西省"
replace Market=8.210 if name=="山东省"
replace Market=6.198 if name=="河南省"
replace Market=6.652 if name=="湖北省"
replace Market=6.546 if name=="湖南省"
replace Market=10.057 if name=="广东省"
replace Market=5.818 if name=="广西壮族自治区"
replace Market=5.542 if name=="海南省"
replace Market=7.234 if name=="重庆市"
replace Market=6.860 if name=="四川省"
replace Market=4.572 if name=="贵州省"
replace Market=5.153 if name=="云南省"
replace Market=2.500 if name=="西藏自治区"
replace Market=4.797 if name=="陕西省"
replace Market=4.445 if name=="甘肃省"
replace Market=3.838 if name=="青海省"
replace Market=4.850 if name=="宁夏回族自治区"
replace Market=5.024 if name== "新疆维吾尔自治区"
spmap Market using "uscoord.dta",id(id) fc(Greys2) legs(2) cln(4) ndf(none)

*另外,你给的数据中还缺少label数据库,该数据库表明在地图上哪个位置(坐标)显示什么内容。
谢谢sungmoo兄的命令,结果还可以。label文件确实是我没有找到,这个文件也不知道何处寻找,给eblog发信了,还没有消息。总的来说,sungmoo兄解决了我对STATA做地图的大部分困惑了,多谢多谢,有空来杭州玩,我一定接待!
We are what we eat, you are what you think.

12
sungmoo 发表于 2010-9-1 11:12:44
天涯在何方 发表于 2010-9-1 11:01 label文件确实是我没有找到,这个文件也不知道何处寻找
这个文件可以根据自己的需要自己设计。里面列明你想要显示的内容以及显示的位置。

你想在地图上显示什么内容(label)?

13
天涯在何方 发表于 2010-9-1 13:40:52
sungmoo 发表于 2010-9-1 11:12
天涯在何方 发表于 2010-9-1 11:01 label文件确实是我没有找到,这个文件也不知道何处寻找
这个文件可以根据自己的需要自己设计。里面列明你想要显示的内容以及显示的位置。

你想在地图上显示什么内容(label)?
想显示包括省名(样本数目和市场化程度指数)三个部分,譬如新疆维吾尔自治区(400,5.02)这样,我更新了样本数目obs的do文件,在附件里,望sungmoo兄拨冗指点,再次感谢。
We are what we eat, you are what you think.

14
sungmoo 发表于 2010-9-1 16:54:58
*结合上面的数据粗略做(需要细化,但基本原理不变):

use uscoord,clear
collapse _X _Y,by(_ID)
sort _ID
save label,replace

use usdb,clear
ren id _ID
sort _ID
mer _ID using label
drop _merge

g Market=.
replace Market=8.619 if name=="北京市"
……
replace Market=5.024 if name=="新疆维吾尔自治区"

g obs=.
replace obs=160 if name=="北京市"
……
replace obs=400  if name=="新疆维吾尔自治区"

g label=substr(name,1,4)+" "+string(obs)+" "+string(Market) ///
   if (_ID<12)|(_ID>16&_ID<21)|(_ID>21&_ID<27)| ///
   _ID==28|_ID==29|_ID==31|_ID==39| ///
   _ID==40|_ID==42|_ID==43|_ID==45|_ID==48| ///
   _ID==50|_ID==63|_ID==64
replace label=subinstr(label,"黑龙","黑龙江",.)
replace label=subinstr(label,"内蒙","内蒙古",.)  

save label,replace

spmap Market using "uscoord.dta",id(_ID) ///
   fc(Greys2) legs(2) cln(4) ndf(none) ///
   lab(d(label) x(_X) y(_Y) l(label))
已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Sunknownay + 100 + 10 + 1 + 1 + 1 热心帮助其他会员

总评分: 经验 + 100  论坛币 + 10  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

15
macross509 发表于 2010-9-1 18:34:43
搞什么,这么复杂,用Arc GIS两下就完了,搞了这么多命令,晕
The Pursuit of HappYness

16
天涯在何方 发表于 2010-9-1 20:04:36
sungmoo 发表于 2010-9-1 16:54
*结合上面的数据粗略做(需要细化,但基本原理不变):

use uscoord,clear
collapse _X _Y,by(_ID)
sort _ID
save label,replace

use usdb,clear
ren id _ID
sort _ID
mer _ID using label
drop _merge

g Market=.
replace Market=8.619 if name=="北京市"
……
replace Market=5.024 if name=="新疆维吾尔自治区"

g obs=.
replace obs=160 if name=="北京市"
……
replace obs=400  if name=="新疆维吾尔自治区"

g label=substr(name,1,4)+" "+string(obs)+" "+string(Market) ///
   if (_ID16&_ID21&_ID
测试可用,非常感谢sungmoo兄的耐心和热心指点!
We are what we eat, you are what you think.

17
sungmoo 发表于 2010-9-2 00:50:30
macross509 发表于 2010-9-1 18:34 搞什么,这么复杂,用Arc GIS两下就完了,搞了这么多命令,晕
stata里画图命令就一步。

(前面都是为了准备数据)

18
pany198634 在职认证  发表于 2010-10-3 18:13:16
非常受教,学习了,各位!
下一站,幸福!

19
zyjbs 发表于 2011-3-16 20:36:05
斑竹你好 看到上述对话 深受启发 我用tmap命令 但是到最后一步不知为何出不来 我已经把该转化的数据包放到tata机组了 想请版主和楼主指点 非常感谢,以下是我的程序:
sshp2dta using s_01au07, database(us_db) coordinates(us_coord) genid(id)
use us_db, clear
describe
list id NAME
use stats
merge scode using trans, sort unique
tabulate _merge
drop _merge
merge id using us_db, sort unique
tabulate _merge
drop _merge
tmap choropleth pop1990, id(id) map(us_coord) palette(Blues)
前面都行 但是到最后制图不行 总是出现这样的提示:

. tmap choropleth pop1990, id(id) map(us_db) palette(Blues)
file us_db specified in option map() does not exist
r(498);
恳请指点 非常感谢

20
zyjbs 发表于 2011-3-16 20:37:08
顺便说一下 我做的是人口 我完全用的是http://www.stata.com/support/faqs/graphics/tmap.html 方法、数据与格式

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jltj
拉您入交流群
GMT+8, 2026-1-18 19:32