1、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/
2、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, smoothqplot(carat, price, data = diamonds, geom = c(# 图2.5 span 参数的作用。左图是 span=0.2,右图是 span=
3、1。), span = 0.2), span = 1)# 图2.6 在运用广义可加模型作为平滑器时 formula 参数的作用。左图是# formula=ys( x),右图是 formula=ys(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)lmformula = y ns(x, 5)
4、# 图2.8 (书中无代码)# 利用扰动点图(左)和箱线图(右)来考察以颜色为条件的每克拉价格的分布。# 随着颜色的改变(从左到右),每克拉价格的跨度逐渐减小,但分布的中位数没有明显的变化。qplot(color, price/carat, data = diamonds, geom = jitterboxplot# 图2.9 改变 alpha 的取值,从左到右分别为 1/5,1/50 和# 1/200。随着不透明度的降低,# 我们可以看出数据集中的地方。然而,箱线图依然是一个更好的选择。, alpha = I(1/5), alpha = I(1/50), alpha = I(1/200)#
5、图2.10 展示钻石重量的分布。左图使用的是 geom=histogram 右图使用的是# geom= density。qplot(carat, data = diamonds, geom = histogramdensity# 图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# 当一个分类变量被映
6、射到某个图形属性上,几何对象会自动按这个变量进行拆分。# 左图是重叠的密度曲线图,右图是堆叠起来的直方图。, colour = color), fill = color)# 图2.13 钻石颜色的条形图。左图显示的是分组的计数,右图是按 weight=carat# 进行加 权,展示了每种颜色的钻石的总重量。qplot(color, data = diamonds, geom = bar, weight = carat) + scale_y_continuous(carat# 图2.14# 衡量失业程度的两张时序图。左图是失业人口的比例,右图是失业星期数的中位# 数。图形是用 geom=line
7、 进行绘制的。qplot(date, unemploy/pop, data = economics, geom = lineqplot(date, uempmed, data = economics, geom = # 图2.15# 展示失业率和失业时间长度之间关系的路径图。左图是重叠在一起的的散点图和路# 径图,右图只有路径图,其中年份用颜色进行了展示。year - function(x) as.POSIXlt(x)$year + 1900qplot(unemploy/pop, uempmed, data = economics, geom = c(pathqplot(unemploy/po
8、p, 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., dat
9、a = diamonds, facets = color ., geom = binwidth = 0.1, xlim = c(0, 3)# 章节2.7qplot(carat, price, data = dsmall, xlab = Price ($), ylab = Weight (carats)main = Price-weight relationshipqplot(carat, price/carat, data = dsmall, ylab = expression(frac(price, carat), xlab = , main = Small diamonds, xlim =
10、 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,
11、 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:10y - factor(letters1:5)qplot(x, x, size = x)qplot(x, x, 1:10, colour = x)qplo
12、t(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 = log10p + coord_polar()- qplot(displ, hwy, data = mpg, c
13、olour = 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(
14、fill = steelblue), stat = binstat_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_t
15、otal, 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()用不同的数据初始化后添加相同的图层libr
16、ary(scales)bestfit - geom_smooth(method = , se = F, colour = alpha(, 0.5), size = 2)qplot(sleep_rem, sleep_total, data = msleep) + bestfitqplot(awake, brainwt, data = msleep, log = y) + bestfitqplot(bodywt, brainwt, data = msleep, log = # 用%*%添加新的数据集来代替原来的数据集- ggplot(mtcars, aes(mpg, wt, colour = cy
17、l) + geom_point()mtcars - transform(mtcars, mpg = mpg2)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
18、)修改颜色(左),用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 = # The difference between (left) setting colour to code and# (right) mapping colour to cod
19、e. When code# is mapped to colour, it is treated as a regular value and scaled with# the default colour scale. This results in pinkish points and a legend.# 图4.2# 将颜色设定为(左)与将颜色映射到(右)的区别。当颜色映# 射到时,将被看作一个普通的字符串,使用默认的颜色标# 度进行标度转换,结果得到了粉红色的点和图例。qplot(mpg, wt, data = mtcars, colour = I(qplot(mpg, wt, dat
20、a = 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,
21、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),
22、 method = # 图4.5# 如果想用箱线图来查看每个时期的身高分布,默认的分组是正确的(左图)。如果# 想用textttgeom_line()添加每个男孩的轨迹,就需要在新图层里设定# aes(group = Subject)(右图)。qplot(Occasion, height, data = Oxboys, geom = ) + geom_line(aes(group = Subject), colour = #3366FFboysbox - 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
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2