全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1972 1
2017-04-23
R的三大绘图系统数据分析

1、基本绘图系统

-需要事先计划;直观地实时反映绘图和分析数据的逻辑

-两步=图+修饰/添加=执行一系列函数

-适于绘制2D图

绘图函数(graphics包)

-plot/hist(柱状图)/boxplot(箱图)/points(点图)/lines(线)/text(在画好的图上添加文字的)/title(给整个图命名的)/axis(添加坐标轴)

-调用函数会启用一个图形设备,并设备上绘图  基本绘图系统+屏幕设备

plot()   eg:plot(x,y,...)   参数:xlab/ylab/lwd(线宽)/lty(线的类型是什么,实线or虚线)/pch(点的类型)/col(颜色)

eg1:plot(airquality$Wind,airquality$Temp)

with(airquality,plot(Wind,Temp))

title(main="wind and Temp in NYC")

%使用了with函数

eg2:with(subset(airquality,Month==9),points(Wind,Temp,col="red"))

%按月份显示

eg3:with(subset(airquality,Month %in% c(6,7,8)),points(Wind,Temp,col="black"))

%显示一个阶段的数据

eg4:fit<-lm(Temp~Wind,airquality)

abline(fit,lwd=2)

%在散点图上面加一条线性回归线

eg5:legend("topright",pch=1,col=c("red","black"),legend=c("Sep","Others"))

%加入图例

-par() 用于设置全局参数(作用欧冠与R中所有的plot绘图)参数:bg(背景颜色)/mar(和边界的边距)/las(文字横竖排版)/mfrow(将当前画板分为几行几列,按照行来填充)/mfcol(按照列来填充)

可以在使用plot函数之前对全局参数进行修改。

eg1:> par("bg") #背景

[1] "white"

> par("col") #字体颜色

[1] "black"

> par("mar")   # #(bottom,left,top,right)

[1] 5.1 4.1 4.1 2.1

>par("mfrow") #几行几列

[1] 1 1

>par(mfrow=c(1,2)) #显示图为一行两列,画两幅图时会并列显示

%记得下次使用要修改

2、Lattice绘图系统

-绘图=使用一次函数调用(一次成图)

-特别适用于观测变量间的交互:在变量z的不同水平,变量y如何随变量x变化

eg:变量x代表年龄,y代表身高,z代表性别。不仅可以观测年龄和身高,还可以观测在男性和女性的前提下,年龄和身高的关系

a.lattice包

(xyplot(散点图)/bwplot/histogram(柱状图)/stripplot/dotplot(点图)/splom/levelplot/contourplot)

格式:xyplot(y~x|f*g,data)(看xy水平在分类变量的前提下如何变化)

panel函数,用于控制每个面板内的绘图

b. grid包

实现了独立于base的绘图系统

lattice包是基于grid创建的;很少直接从grid包调用函数

c lattice与base的重要区别

Base绘图函数直接在图形设备上绘图

Lattice绘图函数返回trellis类对象(包含绘图信息)

打印函数真正执行了在设备上绘图

命令执行时,trellis类对象会被自动打印,所以看起来就像是lattice函数直接完成了绘图。

eg1:> library(lattice)

> xyplot(Temp~Ozone,data=airquality)

# 利用xyplot画散点图

eg2:> airquality$Month<-factor(airquality$Month) %先将月份设置为可以为分类变量

> xyplot(Temp~Ozone|Month,data=airquality,layout=c(5,1))



#考察月份与温度和臭氧含量的交互作用,lattice包处理交互作用的数据比较适合

eg3:> q<-xyplot(Temp~Wind,data=airquality)

> print(q)

#当赋值给其他值的适合,只有当利用print才会显示图片,否则不会显示图片

eg4:panal的使用

> set.seed(1)   %设置种子,当生成随机数时最好设置一个种子数据,这样有据可循

> x<-rnorm(100)

> f<-rep(0:1,each=5) (f中的数据分别为0和1,且每个都为50个)

> y<-x+f-f*x+rnorm(100,sd=0.5)  %保证x,f,y确实有交互关系

> f<-factor(f,labels=c("Group1","Group2"))  %设置保证f为分类变量

> xyplot(y~x|f,layout=c(2,1))

在f=0/1的前提下,x与y的关系



> xyplot(y~x|f,panel=function(x,y){            %设置panel函数,自己设计绘图的样式

+ panel.xyplot(x,y)

+ panel.abline(v=mean(x),h=mean(y),lty=2)   %添加横竖线,横线为x的均值,竖线为y的均值

+ panel.lmline(x,y,col="red")    %添加一条线性拟合线,颜色为红色

+ })

在f的前提下x与y的关系



3、ggplot2绘图系统 (最高大上的绘图系统,科科)

-The Grammar of Graphics

图:动词、名词、形容词等按照语法的组合

本质:数据映射到几何客体的美学属性(颜色/形状/大小)

-基本绘图系统+lattice绘图系统

自动处理标题/文字说明/空间等,但也允许通过添加注释进行修改

层(layer)



绘图函数

qplot() 类似于base系统里的plot(),参数包含aesthetics/geom/facet…

隐藏了绘图实现的细节,灵活性欠佳

eg1:> qplot(Wind,Temp,data=airquality)   #基本的绘图

> qplot(Wind,Temp,data=airquality,color=Month)   #不同的月份赋予不同的颜色



> airquality$Month<-factor(airquality$Month)

> qplot(Wind,Temp,data=airquality,color=Month)  #将月份设置为分类数据



> qplot(Wind,Temp,data=airquality,color=I("red")) #将颜色全部设置为红色用函数I("")

> qplot(Wind,Temp,data=airquality,shape=Month) #不同月份用不同大小来表示



> qplot(Wind,Temp,data=airquality,size=Month)

> qplot(Wind,Temp,data=airquality,geom=c("point","smooth"))  #geom函数代表加入一条平滑的线,进行拟合,阴影部分表示的是置信区间



> qplot(Wind,Temp,data=airquality,facets=.~Month)  #按月份进行绘图



> qplot(Wind,Temp,data=airquality,facets=Month~.)  #按月份进行绘图



> qplot(Wind,data=airquality)  #默认生成的是直方图

> qplot(Wind,data=airquality,facets=Month~.)  #默认生成的是直方图

> qplot(y=Wind,data=airquality)  #当输入y=**时,生成的是散点图



> qplot(Wind,data=airquality,fill=Month)  #累积直方图,不同的颜色代表不同的月份



> qplot(Wind,data=airquality,geom="density",color=Month) #密度函数



ggplot() 是核心,可以实现qplot()无法实现的功能

调用ggplot()本身不能实现绘图,要在其基础上添加层(如geom_point())才可以

> ggplot(airquality,aes(Wind,Temp))+

+ geom_point()     #如果不加geom_point() 的话不显示点,ggplot是分层的



> ggplot(airquality,aes(Wind,Temp))+

+ geom_point(color="steelblue",alpha=0.4,size=5) #添加图片的基础信息



> ggplot(airquality,aes(Wind,Temp))+

+ geom_point(aes(color=factor(Month)),alpha=0.4,size=5) #按照月份进行绘图,factor需要在外面用aes()函数进行处理



>ggplot(airquality,aes(Wind,Temp))+geom_point()+stat_smooth()

#添加点层和统计层(指平滑的回归线,附置信区间)每一层都不是必须存在的

> ggplot(airquality,aes(Wind,Temp))+stat_smooth(method="lm",se=FALSE,aes(col=factor(Month)))

#添加统计层,按照月份区分



> ggplot(airquality,aes(Wind,Temp))+geom_point()+stat_smooth(method="lm",se=FALSE,aes(col=factor(Month),group=1))

#保证只有一条线,只分为一组



ggplot(airquality,aes(Wind,Temp,col=factor(Month)))+

geom_point()+

stat_smooth(method="lm",se=FALSE)+

scale_color_manual("Month",values=myColors)+

facet_grid(.~Month)   #将图放在不同的框里



theme_classic() #关于主题,即背景的一些变化

?theme

善于运用帮助



二维码

扫码加我 拉你入群

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

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

全部回复
2017-4-23 20:53:04
chenjinjian 发表于 2017-4-23 20:47
R的三大绘图系统数据分析

1、基本绘图系统-需要事先计划;直观地实时反映绘图和分析数据的逻辑-两步=图+ ...
良心贴
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群