ggplot2代码文档.docx
- 文档编号:10056903
- 上传时间:2023-02-08
- 格式:DOCX
- 页数:57
- 大小:45.06KB
ggplot2代码文档.docx
《ggplot2代码文档.docx》由会员分享,可在线阅读,更多相关《ggplot2代码文档.docx(57页珍藏版)》请在冰豆网上搜索。
ggplot2代码文档
附录代码
library(ggplot2)
library(gtable)
library(grid)##需要editGrob()函数
p<-qplot(wt,mpg,data=mtcars,colour=cyl,main="Titletext")
p
##修改图形元件:
图形题目字体改为斜体红色
g<-ggplotGrob(p)
idx<-which(g$layout$name=="title")
g$grobs[[idx]]<-editGrob(g$grobs[[idx]],gp=gpar(fontface="italic",col="red"))
##重新绘制
grid.draw(g)
第一章代码:
第二章代码:
library(ggplot2)
##图2.1无代码
######章节2.2
set.seed(1410)#让样本可重复
dsmall<-diamonds[sample(nrow(diamonds),100),]
######章节2.3
qplot(carat,price,data=diamonds)
######章节2.3
qplot(log(carat),log(price),data=diamonds)
######章节2.3
qplot(carat,x*y*z,data=diamonds)
##图2.2将color变量映射到点的颜色(左),cut变量映射到点的形状(右)
qplot(carat,price,data=dsmall,colour=color)
qplot(carat,price,data=dsmall,shape=cut)
##图2.3将alpha值从1/10(左)变动到1/100(中)再到
##1/200(右),来看大部分的点在哪里进行重叠。
qplot(carat,price,data=diamonds,alpha=I(1/10))
qplot(carat,price,data=diamonds,alpha=I(1/100))
qplot(carat,price,data=diamonds,alpha=I(1/200))
##图2.4
##重量与价格的散点图中加入了平滑曲线。
左图为dsmall数据集,右图为完整数据集。
qplot(carat,price,data=dsmall,geom=c("point","smooth"))
qplot(carat,price,data=diamonds,geom=c("point","smooth"))
##图2.5span参数的作用。
左图是span=0.2,右图是span=1。
qplot(carat,price,data=dsmall,geom=c("point","smooth"),span=0.2)
qplot(carat,price,data=dsmall,geom=c("point","smooth"),span=1)
##图2.6在运用广义可加模型作为平滑器时formula参数的作用。
左图是
##formula=y~s(x),右图是formula=y~s(x,bs='cs')。
library(mgcv)
qplot(carat,price,data=dsmall,geom=c("point","smooth"),method="gam",
formula=y~s(x))
qplot(carat,price,data=dsmall,geom=c("point","smooth"),method="gam",
formula=y~s(x,bs="cs"))
##图2.7在运用线性模型作为平滑器时formula参数的作用。
左图是formula=
##y~x的默认值,右图是formula=y~ns(x,5)。
library(splines)
qplot(carat,price,data=dsmall,geom=c("point","smooth"),method="lm")
qplot(carat,price,data=dsmall,geom=c("point","smooth"),method="lm",
formula=y~ns(x,5))
##图2.8(书中无代码)
##利用扰动点图(左)和箱线图(右)来考察以颜色为条件的每克拉价格的分布。
##随着颜色的改变(从左到右),每克拉价格的跨度逐渐减小,但分布的中位数没有明显的变化。
qplot(color,price/carat,data=diamonds,geom="jitter")
qplot(color,price/carat,data=diamonds,geom="boxplot")
##图2.9改变alpha的取值,从左到右分别为1/5,1/50和
##1/200。
随着不透明度的降低,
##我们可以看出数据集中的地方。
然而,箱线图依然是一个更好的选择。
qplot(color,price/carat,data=diamonds,geom="jitter",alpha=I(1/5))
qplot(color,price/carat,data=diamonds,geom="jitter",alpha=I(1/50))
qplot(color,price/carat,data=diamonds,geom="jitter",alpha=I(1/200))
##图2.10展示钻石重量的分布。
左图使用的是geom='histogram'右图使用的是
##geom='density'。
qplot(carat,data=diamonds,geom="histogram")
qplot(carat,data=diamonds,geom="density")
##图2.11变动直方图的组距可以显示出有意思的模式。
从左到右,组距分别为
##1,0.1和0.01。
只有重量在0到3克拉之间的钻石显示在图中。
qplot(carat,data=diamonds,geom="histogram",binwidth=1,xlim=c(0,
3))
qplot(carat,data=diamonds,geom="histogram",binwidth=0.1,xlim=c(0,
3))
qplot(carat,data=diamonds,geom="histogram",binwidth=0.01,xlim=c(0,
3))
##图2.12
##当一个分类变量被映射到某个图形属性上,几何对象会自动按这个变量进行拆分。
##左图是重叠的密度曲线图,右图是堆叠起来的直方图。
qplot(carat,data=diamonds,geom="density",colour=color)
qplot(carat,data=diamonds,geom="histogram",fill=color)
##图2.13钻石颜色的条形图。
左图显示的是分组的计数,右图是按weight=carat
##进行加权,展示了每种颜色的钻石的总重量。
qplot(color,data=diamonds,geom="bar")
qplot(color,data=diamonds,geom="bar",weight=carat)+scale_y_continuous("carat")
##图2.14
##衡量失业程度的两张时序图。
左图是失业人口的比例,右图是失业星期数的中位
##数。
图形是用geom='line'进行绘制的。
qplot(date,unemploy/pop,data=economics,geom="line")
qplot(date,uempmed,data=economics,geom="line")
##图2.15
##展示失业率和失业时间长度之间关系的路径图。
左图是重叠在一起的的散点图和路
##径图,右图只有路径图,其中年份用颜色进行了展示。
year<-function(x)as.POSIXlt(x)$year+1900
qplot(unemploy/pop,uempmed,data=economics,geom=c("point","path"))
qplot(unemploy/pop,uempmed,data=economics,geom="path",colour=year(date))
##图2.16
##展示以颜色为条件的重量的直方图。
左图展示的是频数,右图展示的是频率。
频率
##图可以使得比较不同组的分布时不会受该组样本量大小的影响。
高质量的钻石
##(颜色D)在小
##尺寸上的分布是偏斜的,而随着质量的下降,重量的分布会变得越来越平坦。
qplot(carat,data=diamonds,facets=color~.,geom="histogram",binwidth=0.1,
xlim=c(0,3))
qplot(carat,..density..,data=diamonds,facets=color~.,geom="histogram",
binwidth=0.1,xlim=c(0,3))
######章节2.7
qplot(carat,price,data=dsmall,xlab="Price($)",ylab="Weight(carats)",
main="Price-weightrelationship")
######章节2.7
qplot(carat,price/carat,data=dsmall,ylab=expression(frac(price,carat)),
xlab="Weight(carats)",main="Smalldiamonds",xlim=c(0.2,1))
######章节2.7
qplot(carat,price,data=dsmall,log="xy")
第三章代码:
library(ggplot2)
##图3.1发动机排量(以升为单位displ)对高速公路耗油量(英里每加仑
##hwy)散点图。
点
##根据汽缸数目着色。
该图可以发现影响燃油经济性最重要的因素:
发动机排量大
##小。
qplot(displ,hwy,data=mpg,colour=factor(cyl))
##图3.2:
无代码
##图3.3更复杂的图形一般没有特定的名称。
这幅图在图3.1的基础上对每个
##组添加了回归线。
这个图应该叫什么名字呢?
qplot(displ,hwy,data=mpg,colour=factor(cyl))+geom_smooth(data=subset(mpg,
cyl!
=5),method="lm")
##图3.6一个含有分面和多个图层的复杂图形
qplot(displ,hwy,data=mpg,facets=.~year)+geom_smooth()
##图3.8
##四种不同标度的图例。
从左到右依次是:
连续型变量映射到大小和颜色,离散型变
##量映射到形状和颜色。
x<-1:
10
y<-factor(letters[1:
5])
qplot(x,x,size=x)
qplot(x,x,1:
10,colour=x)
qplot(y,y,1:
10,shape=y)
qplot(y,y,1:
10,colour=y)
##图3.9
##三种不同坐标系的坐标轴和网格线:
笛卡尔(Cartesian)、半对数(semi-log)和极
##坐标系(polar)。
极坐标系展示了非笛卡尔坐标系的缺点:
很难画好坐标轴。
x1<-c(1,10)
y1<-c(1,5)
p<-qplot(x1,y1,geom="blank",xlab=NULL,ylab=NULL)+theme_bw()
p
p+coord_trans(y="log10")
p+coord_polar()
p<-qplot(displ,hwy,data=mpg,colour=factor(cyl))
summary(p)
#保存图形对象
save(p,file="plot.rdata")
#读入图形对象
load("plot.rdata")
#将图片保存成png格式
ggsave("plot.png",width=5,height=5)
第四章代码
library(ggplot2)
##通过ggplot创建图形对象
p<-ggplot(diamonds,aes(carat,price,colour=cut))
##添加“点”几何对象
p<-p+layer(geom="point")
##例:
手动创建图形对象并添加图层
p<-ggplot(diamonds,aes(x=carat))
p<-p+layer(geom="bar",geom_params=list(fill="steelblue"),stat="bin",
stat_params=list(binwidth=2))
p
##应用“快捷函数”,得到与上例相同的图形
p+geom_histogram(binwidth=2,fill="steelblue")
##在用ggplot创建的图形对象上添加图层
ggplot(msleep,aes(sleep_rem/sleep_total,awake))+geom_point()
#等价于
qplot(sleep_rem/sleep_total,awake,data=msleep)
#也可以给qplot添加图层
qplot(sleep_rem/sleep_total,awake,data=msleep)+geom_smooth()
#等价于
qplot(sleep_rem/sleep_total,awake,data=msleep,geom=c("point","smooth"))
#或
ggplot(msleep,aes(sleep_rem/sleep_total,awake))+geom_point()+geom_smooth()
##例:
summary给出图形对象的默认设置和每个图层的信息
p<-ggplot(msleep,aes(sleep_rem/sleep_total,awake))
summary(p)
p<-p+geom_point()
summary(p)
##例:
用不同的数据初始化后添加相同的图层
library(scales)
bestfit<-geom_smooth(method="lm",se=F,colour=alpha("steelblue",0.5),
size=2)
qplot(sleep_rem,sleep_total,data=msleep)+bestfit
qplot(awake,brainwt,data=msleep,log="y")+bestfit
qplot(bodywt,brainwt,data=msleep,log="xy")+bestfit
##用%*%添加新的数据集来代替原来的数据集
p<-ggplot(mtcars,aes(mpg,wt,colour=cyl))+geom_point()
p
mtcars<-transform(mtcars,mpg=mpg^2)
p%+%mtcars
##aes函数的参数
aes(x=weight,y=height,colour=age)
#也可以使用变量的函数值作为参数
aes(weight,height,colour=sqrt(age))
p<-ggplot(mtcars)
summary(p)
p<-p+aes(wt,hp)
summary(p)
##使用默认的参数映射来添加图层
p<-ggplot(mtcars,aes(x=mpg,y=wt))
p+geom_point()
##图4.1修改图形属性。
用factor(cyl)修改颜色(左),用disp修改y坐标(右)。
p+geom_point(aes(colour=factor(cyl)))
p+geom_point(aes(y=disp))
p<-ggplot(mtcars,aes(mpg,wt))
p+geom_point(colour="darkblue")
#注意这里将颜色映射到'darkblue'与上面将颜色设定给'darkblue'的区别
p+geom_point(aes(colour="darkblue"))
#Thedifferencebetween(left)settingcolourto\code{'darkblue'}and
#(right)mappingcolourto\code{'darkblue'}.When\code{'darkblue'}
#ismappedtocolour,itistreatedasaregularvalueandscaledwith
#thedefaultcolourscale.Thisresultsinpinkishpointsandalegend.
##图4.2
##将颜色设定为'darkblue'(左)与将颜色映射到'darkblue'(右)的区别。
当颜色映
##射到'darkblue'时,'darkblue'将被看作一个普通的字符串,使用默认的颜色标
##度进行标度转换,结果得到了粉红色的点和图例。
qplot(mpg,wt,data=mtcars,colour=I("darkblue"))
qplot(mpg,wt,data=mtcars,colour="darkblue")
##图4.3正确分组时(分组变量group=
##Subject)每个个体的折线图(左)。
错误的分组时连
##接所有观测点的折线图(右)。
此处省略了分组图形属性,效果等同于group=
##1。
data(Oxboys,package="nlme")
#左图的代码
p<-ggplot(Oxboys,aes(age,height,group=Subject))+geom_line()
#或
qplot(age,height,data=Oxboys,group=Subject,geom="line")
#右图的代码
qplot(age,height,data=Oxboys,geom="line")
##图4.4
##给Oxboys数据添加光滑曲线。
左图用了和折线图同样的分组变量,得到了每个男
##孩的拟合直线。
右图在平滑层里用了aes(group=1),得到了所有男孩的拟合直
##线。
左图
p+geom_smooth(aes(group=Subject),method="lm",se=F)
#或
qplot(age,height,data=Oxboys,group=Subject,geom="line")+geom_smooth(method="lm",
se=F)
#右图
p+geom_smooth(aes(group=1),method="lm",size=2,se=F)
#或
qplot(age,height,data=Oxboys,group=Subject,geom="line")+geom_smooth(aes(group=1),
method="lm",size=2,se=F)
##图4.5
##如果想用箱线图来查看每个时期的身高分布,默认的分组是正确的(左图)。
如果
##想用\texttt{geom_line()}添加每个男孩的轨迹,就需要在新图层里设定
##aes(group=Subject)(右图)。
左图
qplot(Occasion,height,data=Oxboys,geom="boxplot")
#右图
qplot(Occasion,height,data=Oxboys,geom="boxplot")+geom_line(aes(group=Subject),
colour="#3366FF")
#或
boysbox<-ggplot(Oxboys,aes(Occasion,height))+geom_boxplot()
boysbox+geom_line(aes(group=Subject),colour="#3366FF")
##图4.6
##对于线条和路径,线段的图形属性是由起始点的图形属性决定的。
如果颜色是离
##散的(左图),在相邻的颜色间插入其他颜色是没有任何意义的。
如果颜色是连续
##的(右图),可以在相邻的颜色间进行插补,但默认条件下R不会这样做。
df<-data.frame(x=1:
3,y=1:
3,colo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ggplot2 代码 文档