楼主: jpld
3410 4

[学习分享] 【数据分析 R语言实战】学习笔记 第四章 数据的图形描述 (下) [推广有奖]

  • 2关注
  • 50粉丝

讲师

2%

还不是VIP/贵宾

-

威望
0
论坛币
1263 个
通用积分
9.4733
学术水平
120 点
热心指数
120 点
信用等级
99 点
经验
1249 点
帖子
192
精华
0
在线时间
271 小时
注册时间
2009-5-29
最后登录
2024-6-25

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

4.6 ggplot2程序包

ggplot2是R中用于绘图的高级程序包,它将绘图视为一种映射—数学空问到图形元索空间的映射,例如将不同的数值映射为不同的颜色或其他图形属性。ggplot2在画图时就是采用了类似photoshop的图层设计方式,允许用户一步步构建图形,并且便于图层的修改。

4.6.1快速绘图

qplot(x, y = NULL, ..., data, facets =NULL, margins = FALSE,geom = "auto", stat = list(NULL), position =list(NULL), xlim = c(NA,NA), ylim = c(NA, NA), log = "", main = NULL,xlab= deparse(substitute(x)), ylab = deparse(substitute(y)), asp = NA)

以diamonds数据集为例:

> sample=diamonds[sample(nrow(diamonds),200),]

> qplot(carat,price,data=sample,shape=cut,color)


在上述散点图中添加一条平滑曲线,通过method参数可以指定曲线拟合的方法,默认为method="loess"--平滑局部回归。参数span控制曲线的平滑程度,取值越大曲线越平滑。

> qplot(carat,price,data=sample,geom=c("point","smooth"),span=.3)


使用qplot()对变量carat画出更美观的直方图:

> qplot(carat,data=diamonds,geom="histogram",binwidth=.1,xlim=c(0,3),fill=color)


4.6.2分图层绘图

(1)数据和映射

ggplot(data,mapping=aes(x,y, <otheraesthetics>))

其中,data指定数据集:参数mapping用于构建映射,通常使用函数aes( )来指变量,还可以指定其他分类变量,如颜色,形状,大小等。

> sample=diamonds[sample(nrow(diamonds),1000),]

>p=ggplot(data=sample,mapping=aes(x=carat,y=price,color=clarity))#定义的第一图层存储于p中

(2)几何对象

基本图层确定了数据源和映射后,通过加号(+)就可以不断地添加新图层.第二图层添加几何对象类的函数,在图中绘制图形元素其他类型的图形,如直方图、箱线图等。如点、线、多边形等,还可以用来绘制.


上面函数内部的基本参数都是一样的。以散点图为例:

geom_point(mapping=NULL,data=NULL,stat=”identity”,position=”identity”,na.rm=FALSE,…)

参数mapping用于构建映射,data指定数据集,如果在第一图层己经指定,则可以省略:stat用于这一层数据的统计变换:position用于这一层图形的位置调整,常用于条形图(bar)和直方图,取值为“identity”时表示直接显示," dodge”为按分类变量并列放置," stack”为堆叠放置,"fill”显示相对比例;" jitter”为增加扰动,常用于散点图,防止图形过分重叠。

> p+geom_point()+geom_smooth()


对上面的图形进行整体平滑:

> p=ggplot(data=sample,aes(x=carat,y=price))

> p+geom_point(aes(color=clarity))+geom_smooth()


进行数据映射时,函数aes()可用于设置图形样式,通过参数color,shape和size分别设置点的颜色、形状和大小按哪些向量分类,通过这些参数,即使一个简单的散点图也可以传递大量信息。

>sample=diamonds[sample(nrow(diamonds),100),]

>p=ggplot(data=sample,aes(x=carat,y=price))

>p+geom_point(aes(color=color,shape=cut,size=clarity),alpha=.5,position="jitter")


(3)标度

标度负责控制图形属性的显示方式,主要包括设置坐标轴刻度,修改颜色取值、图例样式等。使用标度类的函数,相当于添加一个新的图层,因此仍然用“+”连接函数,除了基本图层ggplot()其他图层的设置都可以应用于函数qplot()

设置坐标轴样式的标度函数一般以“scale x"开头


(4)统计变换

统计变换函数以“stat”开头,它们可以对原始数据进行某种函数变换,是非常重要的功能。我们可以自定义函数,基于原始数据计算并在图上表现出来,也可以通过它们改变“geom_函数画图的默认统计参数。

例如用stat_smooth对数据作loess平滑,在carat-price散点图上添加非线性回归线。

> sample=diamonds[sample(nrow(diamonds),1000),]

> ggplot(sample,aes(x=carat,y=price))+geom_point()+scale_y_log10()+stat_smooth()

第二图层添加散点;第三图层对Y轴作log10变换;第四图层添加平滑的统计变换

(5)分面

当我们想要观察某一分类变量对数据的影响情况时,仅通过shape, color区分是不够的,需要根据变量的不同取值进行分组、分别绘图。这时就要用到facet数,它控制数据分组的方法和排列形式,进行条件绘图。

常用的函数是facet_wrap(~x, ncol),其中x表示分组变量,ncol表示图形的排列方式,即分成几列。也可以用facet_grid(x~.)替代。

> ggplot(sample,aes(x=carat,y=price))+geom_point(aes(colour=cut))+scale_y_log10()+stat_smooth()+facet_wrap(~cut,ncol=3)


(6)坐标系统


4.7图形保存

完成绘图后,最后一步是按照指定文件格式、属性保存和导出图形,以备以后使用。R绘制好的图可以保存成多种格式,对应的生成函数名即它的扩展名。可生成的文件格式有png jpeg和pdf:

png(file="myplot.png”,bg="transparent")

jpeg(file="myplot.jpeg”)

pdf(file="myplot.pdf”)

生成文件后,默认在后台扫一开,所以查看图形文件前需要用dev.off()关闭文件

此外,程序包ggplot2中的函数ggsave()也用于保存图形,并且可以指定为不同的文件类型。

ggsave(filename=default_name (plot),plot=last_plot(),

device=default_device(filename),path=NULL, scale=1,…)

filename指定生成文件的路径、名称及扩展名,文件路径也可以通过path设置;plot填写图形对象,默认为最后显示的图形:device指定要使用的设备,自动提取文件扩展名;scale为比例因子。将上面的饼图保存成一个pdf文件,只需要一条简单的指令就可以完成。

>ggsave(filename="d:/data/pie.pdf")

这样就生成了一个pdf文件,还可把图形保存成.png格式。


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:R语言实战 学习笔记 数据分析 R语言 习笔记 photoshop substitute position 程序 空间

本帖被以下文库推荐

沙发
tonyme2 在职认证  发表于 2015-5-17 10:35:40 |只看作者 |坛友微信交流群
support

使用道具

藤椅
beckcat 发表于 2015-5-17 14:43:31 |只看作者 |坛友微信交流群
support, too

使用道具

板凳
a443115637 发表于 2015-5-17 15:57:06 |只看作者 |坛友微信交流群
楼主辛苦了

使用道具

报纸
robind 发表于 2015-5-18 17:20:03 |只看作者 |坛友微信交流群
楼主辛苦了

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-11-5 19:45