ggplot2代码文档Word格式.docx
《ggplot2代码文档Word格式.docx》由会员分享,可在线阅读,更多相关《ggplot2代码文档Word格式.docx(57页珍藏版)》请在冰点文库上搜索。
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("
##图2.5span参数的作用。
左图是span=0.2,右图是span=1。
),span=0.2)
),span=1)
##图2.6在运用广义可加模型作为平滑器时formula参数的作用。
左图是
##formula=y~s(x),右图是formula=y~s(x,bs='
cs'
)。
library(mgcv)
),method="
gam"
formula=y~s(x))
formula=y~s(x,bs="
cs"
##图2.7在运用线性模型作为平滑器时formula参数的作用。
左图是formula=
##y~x的默认值,右图是formula=y~ns(x,5)。
library(splines)
lm"
formula=y~ns(x,5))
##图2.8(书中无代码)
##利用扰动点图(左)和箱线图(右)来考察以颜色为条件的每克拉价格的分布。
##随着颜色的改变(从左到右),每克拉价格的跨度逐渐减小,但分布的中位数没有明显的变化。
qplot(color,price/carat,data=diamonds,geom="
jitter"
boxplot"
##图2.9改变alpha的取值,从左到右分别为1/5,1/50和
##1/200。
随着不透明度的降低,
##我们可以看出数据集中的地方。
然而,箱线图依然是一个更好的选择。
alpha=I(1/5))
alpha=I(1/50))
alpha=I(1/200))
##图2.10展示钻石重量的分布。
左图使用的是geom='
histogram'
右图使用的是
##geom='
density'
。
qplot(carat,data=diamonds,geom="
histogram"
density"
##图2.11变动直方图的组距可以显示出有意思的模式。
从左到右,组距分别为
##1,0.1和0.01。
只有重量在0到3克拉之间的钻石显示在图中。
binwidth=1,xlim=c(0,
3))
binwidth=0.1,xlim=c(0,
binwidth=0.01,xlim=c(0,
##图2.12
##当一个分类变量被映射到某个图形属性上,几何对象会自动按这个变量进行拆分。
##左图是重叠的密度曲线图,右图是堆叠起来的直方图。
colour=color)
fill=color)
##图2.13钻石颜色的条形图。
左图显示的是分组的计数,右图是按weight=carat
##进行加权,展示了每种颜色的钻石的总重量。
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="
##图2.15
##展示失业率和失业时间长度之间关系的路径图。
左图是重叠在一起的的散点图和路
##径图,右图只有路径图,其中年份用颜色进行了展示。
year<
-function(x)as.POSIXlt(x)$year+1900
qplot(unemploy/pop,uempmed,data=economics,geom=c("
path"
qplot(unemploy/pop,uempmed,data=economics,geom="
colour=year(date))
##图2.16
##展示以颜色为条件的重量的直方图。
左图展示的是频数,右图展示的是频率。
频率
##图可以使得比较不同组的分布时不会受该组样本量大小的影响。
高质量的钻石
##(颜色D)在小
##尺寸上的分布是偏斜的,而随着质量的下降,重量的分布会变得越来越平坦。
qplot(carat,data=diamonds,facets=color~.,geom="
binwidth=0.1,
xlim=c(0,3))
qplot(carat,..density..,data=diamonds,facets=color~.,geom="
binwidth=0.1,xlim=c(0,3))
######章节2.7
qplot(carat,price,data=dsmall,xlab="
Price($)"
ylab="
Weight(carats)"
main="
Price-weightrelationship"
qplot(carat,price/carat,data=dsmall,ylab=expression(frac(price,carat)),
xlab="
main="
Smalldiamonds"
xlim=c(0.2,1))
qplot(carat,price,data=dsmall,log="
xy"
第三章代码:
##图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="
##图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)
10,colour=y)
##图3.9
##三种不同坐标系的坐标轴和网格线:
笛卡尔(Cartesian)、半对数(semi-log)和极
##坐标系(polar)。
极坐标系展示了非笛卡尔坐标系的缺点:
很难画好坐标轴。
x1<
-c(1,10)
y1<
-c(1,5)
-qplot(x1,y1,geom="
blank"
xlab=NULL,ylab=NULL)+theme_bw()
p+coord_trans(y="
log10"
p+coord_polar()
-qplot(displ,hwy,data=mpg,colour=factor(cyl))
summary(p)
#保存图形对象
save(p,file="
plot.rdata"
#读入图形对象
load("
#将图片保存成png格式
ggsave("
plot.png"
width=5,height=5)
第四章代码
##通过ggplot创建图形对象
-ggplot(diamonds,aes(carat,price,colour=cut))
##添加“点”几何对象
-p+layer(geom="
##例:
手动创建图形对象并添加图层
-ggplot(diamonds,aes(x=carat))
geom_params=list(fill="
steelblue"
),stat="
bin"
stat_params=list(binwidth=2))
##应用“快捷函数”,得到与上例相同的图形
p+geom_histogram(binwidth=2,fill="
##在用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("
#或
ggplot(msleep,aes(sleep_rem/sleep_total,awake))+geom_point()+geom_smooth()
summary给出图形对象的默认设置和每个图层的信息
-ggplot(msleep,aes(sleep_rem/sleep_total,awake))
-p+geom_point()
用不同的数据初始化后添加相同的图层
library(scales)
bestfit<
-geom_smooth(method="
se=F,colour=alpha("
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="
##用%*%添加新的数据集来代替原来的数据集
-ggplot(mtcars,aes(mpg,wt,colour=cyl))+geom_point()
mtcars<
-transform(mtcars,mpg=mpg^2)
p%+%mtcars
##aes函数的参数
aes(x=weight,y=height,colour=age)
#也可以使用变量的函数值作为参数
aes(weight,height,colour=sqrt(age))
-ggplot(mtcars)
-p+aes(wt,hp)
##使用默认的参数映射来添加图层
-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))
-ggplot(mtcars,aes(mpg,wt))
p+geom_point(colour="
darkblue"
#注意这里将颜色映射到'
darkblue'
与上面将颜色设定给'
的区别
p+geom_point(aes(colour="
#Thedifferencebetween(left)settingcolourto\code{'
}and
#(right)mappingcolourto\code{'
}.When\code{'
}
#ismappedtocolour,itistreatedasaregularvalueandscaledwith
#thedefaultcolourscale.Thisresultsinpinkishpointsandalegend.
##图4.2
##将颜色设定为'
(左)与将颜色映射到'
(右)的区别。
当颜色映
##射到'
时,'
将被看作一个普通的字符串,使用默认的颜色标
##度进行标度转换,结果得到了粉红色的点和图例。
qplot(mpg,wt,data=mtcars,colour=I("
qplot(mpg,wt,data=mtcars,colour="
##图4.3正确分组时(分组变量group=
##Subject)每个个体的折线图(左)。
错误的分组时连
##接所有观测点的折线图(右)。
此处省略了分组图形属性,效果等同于group=
##1。
data(Oxboys,package="
nlme"
#左图的代码
-ggplot(Oxboys,aes(age,height,group=Subject))+geom_line()
qplot(age,height,data=Oxboys,group=Subject,geom="
#右图的代码
qplot(age,height,data=Oxboys,geom="
##图4.4
##给Oxboys数据添加光滑曲线。
左图用了和折线图同样的分组变量,得到了每个男
##孩的拟合直线。
右图在平滑层里用了aes(group=1),得到了所有男孩的拟合直
##线。
左图
p+geom_smooth(aes(group=Subject),method="
se=F)
)+geom_smooth(method="
se=F)
#右图
p+geom_smooth(aes(group=1),method="
size=2,se=F)
)+geom_smooth(aes(group=1),
method="
##图4.5
##如果想用箱线图来查看每个时期的身高分布,默认的分组是正确的(左图)。
如果
##想用\texttt{geom_line()}添加每个男孩的轨迹,就需要在新图层里设定
##aes(group=Subject)(右图)。
qplot(Occasion,height,data=Oxboys,geom="
)+geom_line(aes(group=Subject),
colour="
#3366FF"
boysbox<
-ggplot(Oxboys,aes(Occasion,height))+geom_boxplot()
boysbox+geom_line(aes(group=Subject),colour="
##图4.6
##对于线条和路径,线段的图形属性是由起始点的图形属性决定的。
如果颜色是离
##散的(左图),在相邻的颜色间插入其他颜色是没有任何意义的。
如果颜色是连续
##的(右图),可以在相邻的颜色间进行插补,但默认条件下R不会这样做。
df<
-data.frame(x=1:
3,y=1:
3,colo