如何用SAS画中国地图

《CDA数据分析师认证培训 》深圳R语言周末班 (6月3号) 即将开课 ! 最后拼团机会, 三人团优惠400/人,五人团优惠600/人,10人以上优惠900/人,拼团请加团长QQ
累计培养学员超过上千人,零基础系统学习,行业专家授业解惑,班级圈子交流,绝非xx元视频可比。 http://mp./s/zedekFrpqckibK2RYYrIyA
> R时代,你要怎样画地图?
不知道各位平常有没有过需要画地图的需求,有的时候需要在地图上标出特定位置的数据表现或者一些数值,然而怎么实现?
这里主要介绍下在R语言中绘制地图的个人琢磨的思路。绘制地图步骤有三:
你得需要绘制地图;(约等于废话)
你得有要绘制地图的地理信息,经纬度啊,边界啊等等;
你得利用2的数据在R中画出来。
以上步骤中,目前最关键的是2,一旦2的数据有了,在R中不就是把它们连起来嘛,这个对于R来说就是调戏它,就跟全民调戏小黄鸡一样。
R语言中绘制地图的思路也是由于2的获取方式不一样而分开的。
第一种思路:有一些R包中存储着常见地图的数据,比如maps包中存有世界地图、美国地图、美国各州郡地图、法国地图以及加拿大城市地图等,加载了这个包,就可以轻松愉快地绘制上述地图。mapdata包中存有中国地图的数据,但是比较旧了,这个数据,重庆还没有从四川分出来呢。
总体来讲,第一种思路受包中已有的数据数量限制(但我R包多!),如果各个包中都没有梵蒂冈的信息,那咋办啊(其实可以通过绘制世界地图,然后限制区域把梵蒂冈画出来)。而且,如果我想画中国人民大学的地图怎么办???哭……
第二种思路:我先去一个地方下载所画图的地理数据,然后读入R进行绘制。比如由于mapdata中的中国地图比较久远了,谢老大的一文中就介绍了,先从国家基础地理信息中心下载中国各省市的地理数据,之后再绘制。后来肖凯老师又介绍googleVis包也可以按照这个思路来绘制地图,具体可参考(友情提示,需科学上网)。之后的OpenStreetMap包也是提供了方便下载地理数据的途径。
如您所看到的,第二种途径的步骤稍多,不利于大家上手。我知道,如果过程越长,越艰辛,最终绘制出地图的那一刻的快感就越强烈,但是“少折腾”的指示,还是提醒我们,尽量化繁为简。于是第三种的思路,就是既继承了第一种思路简洁的操作方式,又吸取了第二种思路的数据来源广泛的优势。
第三种思路:既然R是自由的,那我能不能直接去调取专业的地图企业或者网站的数据呢,这样就不会受包中数据集所限,我只需要有一个途径去专业的地图供应商那取数据就可以了,比如Google Map,Baidu Map等,这可都是专业的地图网站,里面的地理数据应有尽有,想取啥取啥。自由的R只需要连接Google Map的API,一切就都有了,当然Google大爷不会让你无限制的取数据,目前的限制是2000次(应该是单天的限制),于是ggmap包诞生了,两位作者David Kahle和 Hadley Wickham真是太会解放全球人民了,并且该包中有几个让我无比激动的命令,下文见!!!
好,我们先来按照第一种思路来画几个图:
1、 画世界地图
如果是首次使用,需要在R中装载maps包(install.packages('maps')),这个包中存有世界地图和美国地图的地图数据,所以,几行代码便可以画出世界地图。
代码如下:
library(maps)
map("world", fill = TRUE, col = rainbow(200),
ylim = c(-60, 90), mar = c(0, 0, 0, 0))
title("世界地图")
无比绚丽的世界,引无数骚客竞折腰啊……
2、 画美国地图
同样在maps包中包含了美国地图和美国各州郡的详细地图数据,同样的,也可以用简单的代码画出美国地图,便于我们使用。
代码如下:
library(maps)
map("state", fill = TRUE, col = rainbow(209),
mar = c(0, 0, 2, 0))
title("美国地图")
整体形状这是像啥啊,山姆大叔……
对于美国地图,该包提供画出指定几个州的图,比如这里只画出New York, New Jersey, Penn三州的地图:
代码如下:
library(maps)
map('state', region = c('new york', 'new jersey', 'penn'),
fill = TRUE, col = rainbow(3), mar = c(2, 3, 4, 3))
title("美国三州地图")
输出结果为:
三州鼎力!!
3、 画中国地图
上述的maps包中并没有中国地图的数据 ,在另外一个包mapdata中有中国地图的数据(比较旧的数据)。
代码如下:
library(maps)
library(mapdata)
map("china", col = "red4", ylim = c(18, 54), panel.first = grid())
title(" 中国地图")
哭,重庆在哪里,重庆在哪里??
好,我们来强力介绍ggmap包,先来说下该包让我惊讶的几个命令:
1、geocode()
& geocode("Beijing")
这大哥可以返回一个地方的经纬度,那我再调戏之:
& #这意思就是大哥你多给点!!
& geocode("Renmin University of China", output = "more")
1 116.98 point_of_interest approximate
1 renmin university of china, 59号 zhongguancun street, haidian, beijing, china, 100086
west postal_code country
1 39.42 116.4
administrative_area_level_2 administrative_area_level_1 locality
street streetNo
point_of_interest
1 zhongguancun street
NA renmin university of china
1 Renmin University of China
信息给多了,我说几个点,不但有人民大学的经纬度,还有该大学的详细地址(中国人民大学,中关村大街59号,海淀,北京,中国),还有邮编好吧100086!!!!但是好像跟我们实际的100872有差距(倒是跟10086很接近啊),但是它确实是返回了邮政编码,还有zhongguancun street就不说了……这完全就是返回的Google地图存储的人民大学的信息啊……
2、mapdist()
第二个颠颤颤的命令式mapdist()。比如:
& mapdist('China Agricultural University',
'Renmin University of China', 'walking')
1 China Agricultural University Renmin University of China
miles seconds
1 3.742071
33 1.256389
1 mile = 1609米。
这意思就是说从农大到人大距离6022米,如果您步行,需要4523秒……汗,我下次考虑下步行试试。不过,您说的是农大东校区还是农大西校区啊……
另,ggmap包中不仅仅可以调取Google Map的数据,还可以调取OpenStreetMap (‘osm’)、Stamen Maps (‘stamen’)和CloudMade maps (‘cloudmade’)。亲,这够用了吧。那地图的表现形式也是个性化的,有’terrain’(地势图)、’satellite’(卫星图)、’roadmap’(道路图)和 ‘hybrid’(混合)等。您自个儿选。
其他的不谈了,直接画地图:
1、中国地图
library(ggmap)
library(mapproj)
## Google啊Google给我China的地图数据吧
map &- get_map(location = 'China', zoom = 4)
ggmap(map)
我天朝雄赳赳,气昂昂啊!!请注意左下角的Google logo!!
再来北京道路地图:
#Google啊Google给我Beijing的公路地图数据吧
map &- get_map(location = 'Beijing', zoom = 10, maptype = 'roadmap')
ggmap(map)
最后,我想看下大冬天的有没有人在人民大学的各个楼顶上晒太阳浴:
## Google啊Google给我RUC的卫星地图数据吧
map &- get_map(location = 'Renmin University of China', zoom = 14,
maptype = 'satellite')
ggmap(map)
太不清楚了,根本看不清楚哪跟哪啊。就这么着吧,我估计快够当天限制数了。
转载请注明: &
or分享 (0)苹果/安卓/wp
积分 1772, 距离下一级还需 453 积分
权限: 自定义头衔, 签名中使用图片, 隐身, 设置帖子权限
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡, 显身卡, 匿名卡, 抢沙发, 提升卡下一级可获得
权限: 设置回复可见道具: 沉默卡
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
怎样用SAS程序画卡方分布的图,而且自由度可以调整?谢谢各位高手指点!
retain n 5;
retain e 0.05;
do x=0 to 10 by e*2;
p=probchi(x,n,0);
goptions reset=global gunit=pct cback=white border
htitle=7 htext=2 ftext=swissb colors=(black);
proc gplot data=
plot p*x/vaxis=axis1 haxis=axis2;
symbol1 i=join v=none l=1 h=6.5 w=2;
axis1 label=('probability') ;
axis2 labe ...
载入中......
对论坛有贡献
总评分:&经验 + 100&
学术水平 + 3&
即使在人大经济论坛这个网络世界,我仍以真诚为基础与我的好友进行交往!
本帖最后由 ssliuna 于
15:06 编辑
retain n 5;
retain e 0.05;
&&do x=0 to 10 by e*2;
&&p=probchi(x,n,0);&&
goptions reset=global gunit=pct cback=white border& &&&htitle=7 htext=2 ftext=swissb colors=(black);
proc gplot data=
& &&&plot p*x/vaxis=axis1 haxis=axis2;
& && && &symbol1 i=join v=none l=1 h=6.5 w=2;
& && && &axis1 label=('probability') ;
& && && &axis2 label=('X value') ;
& && && &title1 'Chi distribution (df=5 nc=0)';
这是自由度为5时候的程序,如果想调整自由度,得自己修改n的值。& &
我刚开始接触SAS,水平很有限 ……………
对论坛有贡献
总评分:&论坛币 + 20&
热心指数 + 3&
本帖最后由 ssliuna 于
15:58 编辑
data chiprobt_;
do x=0.01 to 20 by 0.05;
& &pdf_df1=pdf('chisquare',x,1);
& &pdf_df2=pdf('chisquare',x,2);
& &pdf_df3=pdf('chisquare',x,3);
& &pdf_df5=pdf('chisquare',x,5);
& &pdf_df10=pdf('chisquare',x,10);
proc gplot data=chiprobt_;
plot (pdf_df1 pdf_df2 pdf_df3 pdf_df5 pdf_df10)*x/overlay vaxis=(0 to 1 by 0.1)
title1 'chisquare distribution';
title2 'df=1 df=2 df=3 df=5 df=10';
symbol1 i=j c=
symbol2 i=j c=
symbol3 i=j c=
symbol4 i=j c=
symbol5 i=j c=
你也可以试试这个,这个是将几个不同的自由度的图画在一起。希望对你有所帮助
好的意见建议
总评分:&学术水平 + 1&
热心指数 + 1&
无限扩大经管职场人脉圈!每天抽选10位免费名额,现在就扫& 论坛VIP& 贵宾会员& 可免费加入
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
京ICP证090565号
论坛法律顾问:王进律师如何用SAS画正态、t、卡方以及F分布曲线?_统技思维_传送门
如何用SAS画正态、t、卡方以及F分布曲线?
学了这么久的统计,想必大家对统计里的几大分布是不陌生的。周末闲暇,来看看用SAS画的几大分布曲线吧。1. 正态分布正态分布,她是拥有完美身材、曼妙身姿的钟形曲线,她是令无数人魂牵梦绕的自然女神。自然界的诸多现象都拜倒在她的石榴裙下,众多假设检验的也都依托于她的光华。关于她的故事,推荐阅读「正态分布的前世今生」(在原文链接里)。2. t分布t分布算是正态分布的小表妹,外表酷似她的表姐。如果说她的表姐正态分布是大家闺秀的话,那她应该就是小家碧玉啦。自从1908年她被星探William Sealy Gosset发现后,便在小样本统计检验的舞台上大放异彩。3. 卡方分布卡方分布最早是由德国的统计学家Friedrich Robert Helmert于1876年发现,当时的艺名是「Helmert分布」,只可惜一直默默无闻。时光流转到1900,Helmert分布换了个经纪人,此人名为Karl Pearson ,Karl Pearson给她取了个新艺名「卡方分布」,卡方分布这才走红。不过他的走红还有另外一个不得不提的推手,那就是Roanld A Fisher。但是Fisher的得意之作却并不是她,而是接下来的这位。4. F分布知道方差齐性的检验,做过方差分析,不要冷落了Roanld A Fisher和他的小宠:F分布。Q:哎呦,不错哦。求分享,求代码 #@#$%^^&*&%#^&%$@#^A:后台回复「Dcode」获取代码。Q:为毛我画的是这样子滴?等等,不对啊。上面明明是ggplot2的风格乱入啊?请不要忽悠人好嘛!A:StatsThinking, 不忽悠!关注StatsThinking的统计绘图系列分享,来揭晓答案。这篇算是统计绘图系列分享的一个前戏,统计绘图系列分享计划分上中下三篇:上篇:介绍SAS的统计绘图系统及其特点中篇:介绍各种统计图形,如从简单的Historgram, Box, Bar chart,scatter等图形到复杂的Forrest plot 等图形的SAS实现下篇:介绍统计图形的美化,如颜色,边框,图例,位置、像素等等。也许,会有R的对照代码。此外,想给这个系列取个很特别,很特别的名字,要与众不同,又朗朗上口,如SAS绘图点到即止教程SAS绘图一箭穿心教程给女票的SAS绘图教程.......大家评论里给出出主意?多谢。版权说明:欢迎转发,转载,推荐,鼓励打赏。微信公众平台可以随意转载。其他平台转载,不得省略作者信息,包括公众号二维码。
觉得不错,分享给更多人看到
统技思维 微信二维码
分享这篇文章
统技思维 最新头条文章
统技思维 热门头条文章多图预警:如何又快又美地用SAS画各种统计图形?
(window.slotbydup=window.slotbydup || []).push({
id: '2611110',
container: s,
size: '240,200',
display: 'inlay-fix'
您当前位置: &
[ 所属分类
作者 红领巾 ]
这是「你没见过的SAS绘图系列教程」第三次推送。第一次,我们小试牛刀用SAS画了常见的统计分布曲线;第二次,我们从大处着笔介绍了SAS的统计绘图系统。So,今天的主题,第三次:怎么又快又美地用SAS绘制各种统计图形?
我个人认为秘诀就在这ODS Graphic System里。如果你以前用SAS/Graph模块,转ODS Graphic System吧;如果你以前没用过SAS/Graph模块,那更好,直接来看看如何用ODS Graphic System来玩转各种统计图形。
在ODS Graphic System中,有一个像杜十娘百宝箱一样的Procedure,她的名字就叫Proc Sgplot。常见的统计图形,她几乎都能给我们快速的倒腾出来。在开扒之前,先介绍下Proc Sgplot的构造。
最基本的Proc Sgplot就是一个三段式的夹心饼干。首先是报过程名和数据集名;结尾「run;」申明完成任务;中间的夹心奶油就是告诉SAS你要画什么图。当然,可以配合其他一些语句和选项做些点缀和修饰。
proc sgplot data=
plot statement/
这其中plot statement最重要,一种图形换一个plot statement即可:例如,直方图就用histogram语句,竖条图就用vbar语句。泡泡图就用bubble语句,等等。想再叠加一种图形,那就再加一个语句即可 :例如,已经用scatter语句画了散点,想加回归线,那就再加一条reg语句。sgplot目前已提供的plot statement已超过30多个。以下是sgplot的plot语句不完全列表,具体可查看help。
OK,铺垫完了,接下来,别说话,看图!我们一个一个来开扒!为了行文紧凑,仅就直方图的例子给出核心代码,后续的图只点出主要语句,完整代码可回复关键词后集中查看。
查看连续变量的分布情况,频率分布直方图。直接上histogram语句就行。
举个栗子,要画一个简单的直方图,只要如下三行:
proc sgplot data=sashelp.
有时候,我们希望加一条密度曲线,此时再上一个density语句就行。
proc sgplot data=sashelp.
有的时候,我们希望把两个类似变量的直方图放一张图里比较,如何做?同理,那就再加一个histogram语句!
proc sgplot data=sashelp.
histogram mpg_
histogram mpg_
SAS的默认配图颜色比较老陈晦暗,给她换一个配色方案,立马变成活泼明快风。
此外,直方图还有一个有意思的变种,叫金字塔图,或者叫镜面图直方图,蝴蝶图?这个需要一点GTL的技巧。详见的Graphically Speaking博客。
同样查看连续性性变量分布情况,箱线图给出了更为简洁且丰富的概要信息,而SAS所需的,只要一个vbox或者hbox语句。其中v表示vertical, h表示horizental。类似的还有vbar或者har语句。
如果有分组信息,那就在语句后加一个分组选项「/group=groupvar」,SAS会自动以不同的pattern区分。
长得和直方图类似,但是直条图通常是用于类别/组间统计量的比较。此时,vbar或者hbar语句就可以派上用场了。
同理,如果有分组信息,那就在语句后加一个分组选项「/group=groupvar」即可。
很多时候,为了了解数据的变异情况,我们还需要其加上误差棒。此时,limitstat选项就可以上场了。
如果分组,分类比较复杂,那就需要借助proc sgpannel里的panel by语句了。
此外,直条也可以做镜面直条图。不必通过GTL编程,只需要借助proc sgplot的hbarparm,vbarparm以及formart技巧。
4.直条线图
直条图还经常和线图组合成直条线图。此时,可以设置第二y轴,再加一条vline语句画线图。
考察两个变量的关系,做相关和回归前的探查,都可以用scatter语句来描绘散点图。欲分组查看,加一个分组选项「/group=groupvar」即可。
更多时候,我们希望在散点图中增加回归线,查看回归趋势。此时,只要再给SAS一个reg语句就OK。还可以用CLI,CLM查看置信限。同理,欲分组查看,加一个分组选项「/group=groupvar」即可。
把散点,直方图放在一个组图里,组合成一个小矩阵。这就是proc sgscatter的事了。
查看变化趋势。sgplot里的series即可。但往往仅有点估计是不够的,于是要加上标准差,此时需要highlow语句的配合。不过,数据需要先通过proc means处理,计算均数和标准差。
8. ROC曲线
熟悉的不能再熟悉的ROC曲线,其实Proc logisitc的plot=(roc)选项就可以做到。当然,也可用更直接的用其ROC语句,还可以用roccontrast来进行ROC曲线的比较。
9. K-M曲线
生存分析里的K-M曲线,其实Proc lifetest的plots=survival选项即可实现。其中survial的亚选项更为丰富,不仅可以实现画生存曲线,也可以画死亡曲线;不仅可以画点估计值,也可以画置信区间。
不仅如此,期刊中常见的No. at risk已经log-rank检验的P值也可以直接在图上体现。
10. 泡泡图
平面化的三维图形。proc sgplot的bubble语句的专利。欲分组查看,加一个分组选项「/group=groupvar」即可,当然,还可用reg语句增加回归线。
11. 森林图
森林图不仅仅是在Meta分析中大行其道,在各种带OR, HR值的分析中,也全是她的身影。森林图由于结合了文字和图形,在制作过程中较为复杂,需要GTL编程。
直接用OR值绘制森林图
Logistic回归结果改造的森林图
12. 裂轴图
经常是数轴虽然等距,但是中间的数值其实被砍去一大截,以节省绘图空间。如下图y轴,0~50和50~60在数轴上等距,但是真实数据差了4倍。所以用「//」标示数轴有间断。这种图的绘制,也需要GTL编程。
当然,除了以上图形,sgplot还有其他许多应用。此外,ODS Graphic System的其他过程如SGpannl ,SGDesign,SGRender都有应用。当然,SAS默认的绘图风格比较老陈晦暗,后续还可以做一定的美化,这就是下次推送的内容啦。
完整代码链接:/s/1qYKgtWC 密码: sjtg
除非注明来源,本站文章均为原创或编译,转载请注明出处并保留链接。数据分析网 多图预警:如何又快又美地用SAS画各种统计图形?
转载请注明本文标题:本站链接:
分享请点击:
1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
CodeSecTeam微信公众号
脚步无法到达的地方,目光可以到达;目光无法到达的地方,梦想可以到达。
手机客户端苹果/安卓/wp
积分 18, 距离下一级还需 6 积分
道具: 彩虹炫, 涂鸦板, 雷达卡, 热点灯, 金钱卡
购买后可立即获得
权限: 隐身
道具: 金钱卡, 彩虹炫, 雷达卡, 热点灯, 涂鸦板
现在碰到一个问题,一组统计数据要画出地图上的分布图。但是是基于DMA level的。DMA:按照电视广播市场划分美国区域,例如大芝加哥地区,华府地区等等。
不知有没有高手知道怎样创建这样的地图
sas EG 没有自带的DMA 地图,在网上找到一段可以画出边界的code,里面用到了sas/gis模块下的 “maps.usaac”, eg里面也没有,不知有没有人能分享一下这个数据。万分感谢
支持楼主:、
购买后,论坛将把您花费的资金全部奖励给楼主,以表示您对TA发好贴的支持
载入中......
sas map绘制地图,参考
/link?url=oU6LTVg-ikUSEykeO-P1mbEVXpIDpMXsBW390LLVyMyHIqOUrH7RABR_Kp5YojtYppOfhIl94apgTx4qSjIu3v6JaDTdj8llXLg2C8LEBH_
无限扩大经管职场人脉圈!每天抽选10位免费名额,现在就扫& 论坛VIP& 贵宾会员& 可免费加入
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
&nbsp&nbsp|
如有投资本站或合作意向,请联系(010-);
邮箱:service@pinggu.org
投诉或不良信息处理:(010-)
京ICP证090565号
论坛法律顾问:王进律师

我要回帖

 

随机推荐