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
善于运用帮助