python有个非常强大的工具,那就是ipython notebook。用户可以在浏览器中直接编写python脚本,并立即得到输出结果。这类文档可以存为ipynb分享给其它人,也可以存为html直接放在网站上,非常有利于学习交流。
在R语言方面就缺乏这类工具,不过ipython有一种“魔法”,可以在ipython中运行其它语言。在数据分析时,可以将python和R代码混编,充分利用两种语言的优势。以可视化为例,R的ggplot2图形语法可谓是独步江湖,python中虽然已经有不少优秀的绘图库。但总不及ggplot2用得习惯。下面的小例子就是示范在ipython notebook中画ggplot2。
首先是用numpy库建立两个向量,再用%load_ext建立python和R的连接机制。之后在ipython notebook的一个cell里面就可以使用%R后面接R代码行,或者使用%%R使用代码块。如果要在R代码块中读入python的对象,需要使用-i参数。
其它例子可以参见这个,python中也有人复制了ggplot语法,可参见这里。
星期日, 七月 20, 2014
星期六, 十月 06, 2012
Economist风格的统计绘图
《Economist》(经济学人)是一份由伦敦经济学人报纸有限公司出版的杂志,于1843年9月由詹姆士·威尔逊创办。杂文章写得机智,幽默,有力度,严肃又不失诙谐,并且注重于如何在最小的篇幅内告诉读者最多的信息。杂志主要关注政治和商业方面的新闻,但是每期也有一两篇针对科技和艺术的报导,以及一些书评。从2012年1月28日的那一期杂志开始,《经济学人》杂志开辟了中国专栏,为有关中国的文章提供更多的版面。
杂志不仅文章内容精彩,排版和图片也非常具有特色。其中的统计图片均是以蓝色为基调,简洁而大气。如果你想绘制出这种风格的统计图,现在也很简单了。只需要使用R语言中大名鼎鼎的ggplot2包,以及Jeffrey Arnold新开发的ggthemes包,就能轻易的实现了。
ggthemes包还不能从CRAN库中安装,所以需要从github上下载原始文档,编译成zip本地安装包,最后在R中进行安装加载就可以使用了。如果你已经安装了Rtools,也可以使用devtools包中的install_github()函数来直接安装github上的R包。
下面就是用ggplot2+ggthemes包作的一个小例子,其中重要的就是要用到theme_economist()和scale_color_economist()这两个函数来实现economist风格的统计图。很简单吧!ggthemes包中还有其它主题可供使用,慢慢研究。
杂志不仅文章内容精彩,排版和图片也非常具有特色。其中的统计图片均是以蓝色为基调,简洁而大气。如果你想绘制出这种风格的统计图,现在也很简单了。只需要使用R语言中大名鼎鼎的ggplot2包,以及Jeffrey Arnold新开发的ggthemes包,就能轻易的实现了。
ggthemes包还不能从CRAN库中安装,所以需要从github上下载原始文档,编译成zip本地安装包,最后在R中进行安装加载就可以使用了。如果你已经安装了Rtools,也可以使用devtools包中的install_github()函数来直接安装github上的R包。
下面就是用ggplot2+ggthemes包作的一个小例子,其中重要的就是要用到theme_economist()和scale_color_economist()这两个函数来实现economist风格的统计图。很简单吧!ggthemes包中还有其它主题可供使用,慢慢研究。
星期六, 八月 04, 2012
中国的环境状况在全球的位置
由美国耶鲁大学和哥伦比亚大学联合推出的“年度全球环境绩效指数”(EPI)排名在2012年年初放出。此排名旨在评估一个国家的环境政策,环境卫生与生态系统之平衡的状态,涵盖10项领域共22项环境指标,涉及领域包括气候变化、农业、渔业、森林、水源、空气污染及环境负担等。详细报告和数据都可以在网站主页找到。本文就使用这个数据集来观察中国的环境状况在全球的位置。
上面的小提琴图即是22项指标的分布,叠加的红色圆点表示了中国得分位置。这些指标已经被研究人员进行了转换,所有的指标均是得分越高越好。从这些得分点可以看出,中国在森林保护(FORGROINV)和生物多样性(PACOV)方面做得还不错,CO2排放(CO2GDP)和饮用水(WATSUPINV)等方面做得一般,在PM2.5和室内空气(INDOOR)等方面处于垫底情况。更多的指标说明请参看报告主页。其中的EPI是环境绩效评价的综合得分。
上面的小提琴图即是22项指标的分布,叠加的红色圆点表示了中国得分位置。这些指标已经被研究人员进行了转换,所有的指标均是得分越高越好。从这些得分点可以看出,中国在森林保护(FORGROINV)和生物多样性(PACOV)方面做得还不错,CO2排放(CO2GDP)和饮用水(WATSUPINV)等方面做得一般,在PM2.5和室内空气(INDOOR)等方面处于垫底情况。更多的指标说明请参看报告主页。其中的EPI是环境绩效评价的综合得分。
星期四, 七月 26, 2012
中国国内航线信息的可视化
星期四, 六月 28, 2012
用ggmap包进行地震数据的可视化
星期二, 六月 19, 2012
ggplot的图形组合与添加jpeg文档的方法
最近有位朋友问了一个关于ggplot2作图的问题。涉及到多个图形组合的问题,所以还是费了一些时间来解决,自己也从中学习了一些新东西。顺手将这个画图的过程扔上来当作一篇博文吧。下图就是最后的结果。画这个图有几个障碍,一个是二维散点的置信椭圆,另一个是一维直方图的边缘显示。解决的方法是用ellipse包来生成置信椭圆数据,并且用gridExtra包来组合多个图形,还要用opts来去除图例标注的显示。
星期四, 六月 07, 2012
北上广三地的空气质量抽样比较
从前看《龙文鞭影》里的小故事,印象中有“秦宓论天”这么一个典故。在莫谈国事的天朝,“天”乃是肉食者的禁脔,草民无权过问,茶馆里只能谈天气。但最近不仅不能谈“天”,据说连“天气”也不能谈了。所谓越是禁止的就越有破禁的快感。今天就来专门谈一谈天气。武汉的天气我们已经谈过,本文就来干涉下上海、北京和广州三地的天气内政,焦点即是这三个城市的空气质量情况。
我们的思路是从Twitter上采集空气质量数据,由于美国上海领事馆目前只公布了不到700条信息,所以我们只采集了660条,该数据是每小时公布一次,也就得到了最近约一个月的数据。我们的重点是AQI(Air Quality Index)数字。关于AQI的解释可以看这里。 收集的数据发现有少量是缺失值,这可能是仪器故障、爆表或是人员失误。而且广州领事馆发布的数据有不少格式不符的。数据收集之后进行了预处理,以转成容易处理的数据框格式。然后我们绘制了小提琴图,以观察不同城市的AQI数据,数值越大表明空气质量越差。
星期五, 六月 01, 2012
红楼梦文本折腾纪要
虽然对红学一无所知,对文本挖掘只是“略懂”,但并不妨碍我们勇于折腾的生活方式。上周参加了第五届R会议,学到不少好东西,其中一个就是中文分词的工具。当然要找个对象来折腾一下啦。本次的黑手就伸向了被人蹂躏无数次的小说《红楼梦》。
折腾的思路基本上就是:1、将文本按章回划分。2、按章回获取某些统计量,看能否区别前八十回和后四十回。3、中文分词后以空间向量模型方法构造词条-文档关系矩阵。4、计算文档间距离后用多维标度方法降到二维展现120回的散点图形。
先从网上扒拉下一个纯文本的文档,也不知道什么版本。先用记事本打开后转成UTF8格式,然后在R中读入资料。此时的存储格式是list格式,list的每一个元素是文本中的一段。首先找出文本的章节划分点,然后计算出每一章节的段落数。下图即是这120回的段落数条形图,似乎在后四十回段落数量较少,而且趋于稳定,不如前八十回变化大。对二者作一个wilcox检验,证实了数量较少的显著性。同时用置换检验也证实了这一点。
星期六, 五月 19, 2012
用glmnet包实施套索算法(LASSO)
这两种方法的共同点在于,将解释变量的系数加入到Cost Function中,并对其进行最小化,本质上是对过多的参数实施了惩罚。而两种方法的区别在于惩罚函数不同。但这种微小的区别却使LASSO有很多优良的特质(可以同时选择和缩减参数)。下面的公式就是在线性模型中两种方法所对应的目标函数:
星期四, 五月 10, 2012
用ggplot2包来绘制地图
自从四月份进行重大升级之后,0.90版的ggplot2包更新了很多新功能。之前的博文谈到了升级版的二维直方图。今天我们要谈的是绘制地图的新功能。其图形元素主要是通过geom_map来实现,在它的帮助文档中只描述了如何绘制美国地图,而美国地图是系统内maps包所自带的地图数据。其它图家地图数据则要从外部导入,本文则尝试从
GADM 获取中国行政区域数据,然后用ggplot2包进行绘图。GADM是世界行政区域(或行政区域界线)位置的空间数据库,可以用于地理信息系统和类似软件。这个数据库也提供了R语言数据格式。
本例的目的是结合地理数据和水资源数据,以说明中国人均水资源拥有量的分布情况。基本步骤是先导入地理信息数据,将其转为ggplot2可以处理的数据框格式,将水资源数据整合进来,最后绘制成图。在下图中,红色代表了人均水资源拥有量较低的地区,黄绿色代表较高的地区。多年以来,华北地区都是有名的缺水地区,而长江以南水资源相对较为丰富,这一点很容易观察出来。而西藏、青海人口数量少,使人均水资源偏高。此外,根据全国水资源公报的数字,全国平均的人均水资源量是2200立方米。我们可以根据这一数字,将低于平均数的省份单独显示出来。顺便说下,公鸡的另一只腿可不是我吃了,数据原本如此。
本例的目的是结合地理数据和水资源数据,以说明中国人均水资源拥有量的分布情况。基本步骤是先导入地理信息数据,将其转为ggplot2可以处理的数据框格式,将水资源数据整合进来,最后绘制成图。在下图中,红色代表了人均水资源拥有量较低的地区,黄绿色代表较高的地区。多年以来,华北地区都是有名的缺水地区,而长江以南水资源相对较为丰富,这一点很容易观察出来。而西藏、青海人口数量少,使人均水资源偏高。此外,根据全国水资源公报的数字,全国平均的人均水资源量是2200立方米。我们可以根据这一数字,将低于平均数的省份单独显示出来。顺便说下,公鸡的另一只腿可不是我吃了,数据原本如此。
星期四, 五月 03, 2012
日历中的夏天
看着有节,摸着无节--打一生活用品
不知不觉,夏日已慢慢临近。姑娘们飞扬的裙角,小贩叫卖的西瓜,蚊蝇嗡嗡的声音,以及翻过的一页日历,都提醒着你--夏天快来了。夏季有着不同的定义,根据中国人的日历,我们所俗称的夏季从“立夏”开始,到“立秋”结束。在气候学上,若连续五天平均温度超过22度,则算作夏季的开始,若五天平均温度低于22度则算作入秋。而天文学上的夏季一般是指6、7、8三个月。
我们想知道:哪一种夏季的定义更合乎我们的感觉?还是用数据可视化来说话吧。这项任务基本上有两个步骤,一是获取某城市的2011年日平均温度数据,二是根据数据绘制日历热图(Calendar Heatmap)。
星期日, 四月 01, 2012
清明时节说死刑
死刑是自人类社会发展以来就诞生的一种剥夺人生命的刑罚。死刑除了是对于不守规则的事件的惩罚外,也是对破坏规则的情况的一种极重度的威吓。这个史前就已有的制度,是对进行不容于社会的行为的严厉惩罚之一。世界上几乎每一个国家或地区都曾有过“死刑”这种刑罚制度,时至今日,仍有一些国家继续存有并继续执行死刑。然而多数国家已经废止了死刑,有些国家则是已经10年以上未执行过死刑,或是仅允许在战时使用死刑。
在最近卫报的一则文章中,根据从2007到2011年的死刑数据进行了一些可视化工作。特别是根据大赦国际最近公布的一份报告,给出了一份死刑执行情况的气泡地图。形象的说明了当今世界上还有哪些国家在判决与执行死刑。本文则是照猫画虎,以说明R语言中googleVis包和ggplot2包的使用方法。
在最近卫报的一则文章中,根据从2007到2011年的死刑数据进行了一些可视化工作。特别是根据大赦国际最近公布的一份报告,给出了一份死刑执行情况的气泡地图。形象的说明了当今世界上还有哪些国家在判决与执行死刑。本文则是照猫画虎,以说明R语言中googleVis包和ggplot2包的使用方法。
星期日, 三月 18, 2012
ggplot2的新特性:升级版的二维直方图
本文的例子是R中内置的钻石数据(diamonds),其中用到的变量包括价格(price),重量(carat)以及某种尺寸指标(depth)。先绘制carat和price之间的散点图来了解二者关系,从下图可见,由于数据量过大,尽管使用了透明度参数,散点仍非常密集。
星期六, 二月 18, 2012
数字显微镜下的林书豪
第一步:我们先画出这些变量的相关系数图,以剔除一些冗余的变量,从下图可看到深兰色方块即表示两组数据间有较强正相关,那么我们只需取其中一组数据即可,例如TRB(篮板总数)就可以代替ORB/DRB/BUK。由此我们提取MP/FGA/FGP/X3PP/FT/FTP/TRB/AST/STL/PF/TOV/PTS这12个变量作进一步处理。
星期三, 二月 15, 2012
用ggplot2包绘制风向风速玫瑰图
风向风速玫瑰图(wind rose)是气象学家常用的图形工具,描述了在一个特定的地点,其风速和风向是如何分布的。风向风速图实际上是一种条形图的扩展,它使用网格化的极坐标系统,用不同的方位来汇集风向及其频数,频率最大的方位,表示该风向出现次数最多。并且还用不同的颜色带来区别风速的大小。在本例中我们首先使用ggplot2包来绘制如下的风向风速图,再用专门工具进行示例。
星期日, 一月 29, 2012
ggplot2绘图入门系列之五:时间序列(完)
ggplot2包也能对时间序列数据绘图,但在处理上需要有些注意的地方。下面我们以上证指数为例进行作图,首先利用quantmod包从yahoo数据源获取从1997年以来的数据,存于变量SSEC中,抽取收盘数字,然后分别提取时间数据和指数数值,绘图结果如下图。
星期五, 一月 27, 2012
ggplot2绘图入门系列之四:再说散点图
在前文中已初步介绍了散点图的绘制方法,本文介绍一些细节方面的参数设置。
1 色彩和形状的控制
数据特征不仅可以用坐标来表示,也可以用不同的色彩或形状来表示。仍以mpg数据集为例,所用到的变量有cty(城市中行驶距离),hwy(高速路行驶距离),displ(排量大小),year(生产年份)
1 色彩和形状的控制
数据特征不仅可以用坐标来表示,也可以用不同的色彩或形状来表示。仍以mpg数据集为例,所用到的变量有cty(城市中行驶距离),hwy(高速路行驶距离),displ(排量大小),year(生产年份)
星期四, 一月 19, 2012
ggplot2绘图入门系列之三:位置调整与条形图
星期日, 一月 15, 2012
ggplot2绘图入门系列之二:图层控制与直方图
如前文所述,ggplot2使用图层将各种图形元素逐步添加组合,从而形成最终结果。第一层必须是原始数据层,其中data参数控制数据来源,注意数据形式只能是数据框格式。aes参数控制了对哪些变量进行图形映射,以及映射方式,aes是Aesthetic的缩写。
下面我们来绘制一个直方图作为示例。数据集仍采取mpg,对hwy变量绘制直方图。首先加载了扩展包,然后用ggplot函数建立了第一层,hwy数据映射到X轴上;使用+号增加了第二层,即直方图对象层。此时p被视为一种层对象,使用summary函数可得到关于它的更多信息,print(p)命令即可进行绘图。
下面我们来绘制一个直方图作为示例。数据集仍采取mpg,对hwy变量绘制直方图。首先加载了扩展包,然后用ggplot函数建立了第一层,hwy数据映射到X轴上;使用+号增加了第二层,即直方图对象层。此时p被视为一种层对象,使用summary函数可得到关于它的更多信息,print(p)命令即可进行绘图。
星期五, 一月 13, 2012
ggplot2绘图入门系列之一:导论
1 什么是ggplot2
ggplot2是用于绘图的R语言扩展包,其理念根植于《Grammar of Graphics》一书。它将绘图视为一种映射,即从数学空间映射到图形元素空间。例如将不同的数值映射到不同的色彩或透明度。该绘图包的特点在于并不去定义具体的图形(如直方图,散点图),而是定义各种底层组件(如线条、方块)来合成复杂的图形,这使它能以非常简洁的函数构建各类图形,而且默认条件下的绘图品质就能达到出版要求。
2 与lattice包的比较
ggplot2和lattice都属于高级的格点绘图包,初学R语言的朋友可能会在二者选择上有所疑惑。从各自特点上来看,lattice入门较容易,作图速度较快,图形函数种类较多,比如它可以进行三维绘图,而ggplot2就不能。ggplot2需要一段时间的学习,但当你跨过这个门槛之后,就能体会到它的简洁和优雅,而且ggplot2可以通过底层组件构造前所未有的图形,你所受到的限制只是你的想象力。
ggplot2是用于绘图的R语言扩展包,其理念根植于《Grammar of Graphics》一书。它将绘图视为一种映射,即从数学空间映射到图形元素空间。例如将不同的数值映射到不同的色彩或透明度。该绘图包的特点在于并不去定义具体的图形(如直方图,散点图),而是定义各种底层组件(如线条、方块)来合成复杂的图形,这使它能以非常简洁的函数构建各类图形,而且默认条件下的绘图品质就能达到出版要求。
2 与lattice包的比较
ggplot2和lattice都属于高级的格点绘图包,初学R语言的朋友可能会在二者选择上有所疑惑。从各自特点上来看,lattice入门较容易,作图速度较快,图形函数种类较多,比如它可以进行三维绘图,而ggplot2就不能。ggplot2需要一段时间的学习,但当你跨过这个门槛之后,就能体会到它的简洁和优雅,而且ggplot2可以通过底层组件构造前所未有的图形,你所受到的限制只是你的想象力。
订阅:
博文 (Atom)













