从化建设局网站关停,青年旅舍网站开发背景及意义,个人使用网站,惠民县建设局官方网站介绍ggplot2包使用形状、颜色和尺寸来对多元数据进行可视化用刻面图比较各组自定义ggplot2图19.1 R中的四种图形系统基础gridlatticeggplot2(用的较多)gghub需要的R包ggpolt2gridExtra(可以拼图)car19.2 ggplot2介绍library(ggplot2)ggplot(datamtcars, aes(xwt, ympg)) geom_p… 介绍ggplot2包使用形状、颜色和尺寸来对多元数据进行可视化用刻面图比较各组自定义ggplot2图19.1 R中的四种图形系统基础gridlatticeggplot2(用的较多)gghub需要的R包ggpolt2gridExtra(可以拼图)car19.2 ggplot2介绍library(ggplot2)ggplot(datamtcars, aes(xwt, ympg)) geom_point() labs(, xWeight, yMiles Per Gallon)image-20200719172844715ggplot()初始化图形并且指顶要用到的数据来源(mtcars)和变量(wt\mpg)。aes()函数的功能是指定每个变量扮演的角色(aes代表aesthetics即如何用视觉形式呈现信息)。变量wt的值映射到沿x轴的距离变量mpg的值映射到沿y轴的距离。ggplot()函数设置图形但没有自己的视觉输出。使用一个或多个几何函数向图中添加了几何对象(简写为geom)包括点、线、条、箱线图和阴影区域。geom_point()函数在图形中画点创建了一个散点图。labs()函数是可选的可添加注释(包括轴标签和标题)。library(ggplot2)ggplot(datamtcars, aes(xwt, ympg)) geom_point(pch17, colorblue, size2) geom_smooth(methodlm, colorred, linetype2) labs(, xWeight, yMiles Per Gallon)汽车重量与汽油里程的散点图它们的最佳拟合线及其95%的置信区间选用geom_point()函数来设置点的形状为三角形(pch17)点的大小加倍(size2)并使颜色为蓝色(colorblue)。geom_smooth()函数增加了一条“平滑”曲线。这里需要线性拟合(methodlm)并且产生一条红色(colorred)虚线(linetype2)线条尺寸为1(size1)。默认情况下平滑的曲线包括在95%的置信区间(较暗带)内。ggplot2包提供了分组和小面化的方法分组是再一个图形中显示两组或多组观察结果小面化是指再单独并排的图形上显示观察组。ggplot2再定义组和面时使用因子(factor)示例我们可以使用mtcars数据集来查看分组和面。首先将am、vs和cyl变量转化为因子rm(listls())mtcars$am labelsc(Automatic, Manual))mtcars$vs labelsc(V-Engine, Straight Engine))mtcars$cyl #绘图library(ggplot2)ggplot(datamtcars, aes(xhp, ympg,shapecyl, colorcyl)) geom_point(size3)facet_grid(am~vs)labs(, xHorsepower, yMiles Per Gallon)包含变速箱类型(自动对手动)和发动机装置(V型发动机与直列式发动 机)每个组合的分离的散点图。每个点的颜色和形状表示该汽车发动机汽缸的数量。在本例中am和vs是刻面变量cyl是分组变量。19.3 用几何函数指定图的类型函数添加选项geom_bar()条形图color、fill、alphageom_boxplot()箱线图color、fill、alpha、notch、widthgeom_density()密度图color、fill、alpha、linetypegeom_histogram()直方图color、fill、alpha、linetype、binwidthgeom_hline()水平线color、alpha、linetype、sizegeom_jitter()抖动点color、size、alpha、shapegeom_line()线图colorvalpha、linetype、sizegeom_point()散点图color、alpha、shape、sizegeom_rug()地毯图color、sidegeom_smooth()拟合曲线method、formula、color、fill、linetype、sizegeom_text()文字注解很多参见函数的“帮助”geom_violin()小提琴图color、fill、alpha、linetypegeom_vline()垂线color、alpha、linetype、size书中描述的大多数图形都可以使用表19-2中的几何函数创建ggplot(singer, aes(xvoice.part, yheight)) geom_boxplot()选项详述color对点、线和填充区域的边界进行着色fill对填充区域着色如条形和密度区域alpha颜色的透明度从0(完全透明)到1(不透明)。linetype图案的线条(1实线2虚线3点4点破折号5长破折号6双破折号)size点的尺寸和线的宽度shape点的形状(和pch一样0开放的方形1开放的圆形2开放的三角形等等)position绘制诸如条形图和点等对象的位置。对条形图来说dodge将分组条形图并排stacked堆叠分组条形图fill垂直地堆叠分组条形图并规范其高度相等。对于点来说jitter减少点重叠binwidth直方图的宽度notch表示方块图是否应为缺口(TRUE/FALSE)sides地毯图的安置(b底部l左部t顶部r右部bl左下部等等)width箱线图的宽度data(Salaries)#现在R好像内置了这一个数据集library(ggplot2)ggplot(Salaries, aes(xrank, ysalary)) geom_boxplot(fillcornflowerblue,colorblack, notchTRUE)geom_point(positionjitter, colorblue, alpha.5)geom_rug(sidel, colorblack)图层的叠加是ggplot2的魅力所在library(ggplot2)data(singer, packagelattice)ggplot(singer, aes(xvoice.part, yheight)) geom_violin(filllightblue) geom_boxplot(filllightgreen, width.2)19.4 分组为了理解数据在一个图中画出两个或更多组的观察值通常是很有帮助的。在R中组通常用分类变量的水平(因子)来定义。分组是通过ggplot2图将一个或多个带有诸如形状、颜色、填充、尺寸和线类型的视觉特征的分组变量来完成的。ggplot()声明中的aes()函数负责分配变量(图形的视觉特征)所以这是一个分配分组变量的自然的地方以薪水为例子。变量包括变量包括rank(助理教授、副教授、教授)、sex(女性、男性)、yrs.since.phd(获得博士学位年数)、yrs.service(工龄)和salary(以美元计的九个月薪水)。薪水和学术等级data(Salaries, packagecar)library(ggplot2)ggplot(dataSalaries, aes(xsalary, fillrank)) geom_density(alpha.3)#密度曲线在同一幅图中画出了三条密度曲线(每条曲线代表一个学术等级)并用不同的颜色来区分。填充的设置有些透明度(alpha)博士学位获得年数和薪水ggplot(Salaries, aes(xyrs.since.phd, ysalary, colorrank,shapesex)) geom_point()学术等级和性别ggplot(Salaries, aes(xrank, fillsex)) geom_bar(positionstack) labs(stack)ggplot(Salaries, aes(xrank, fillsex)) geom_bar(positiondodge) labs(dodge)ggplot(Salaries, aes(xrank, fillsex)) geom_bar(positionfill) labs(fill)19.5 刻面如果组在图中并排出现而不是重叠为单一的图形关系就是清晰的。我们可以使用facet_wrap()函数和facet_grid()函数创建网格图形语法结果facet_wrap(~var,ncoln)将每个var水平排列成n列的独立图facet_wrap(~var,nrown)将每个var水平排列成n行的独立图facet_grid(rowvar~colvar)rowvar和colvar组合的独立图其中rowvar表示行colvar表示列facet_grid(rowvar~.)每个rowvar水平的独立图配置成一个单列facet_grid(.~colvar)每个colvar水平的独立图配置成一个单行data(singer, packagelattice)library(ggplot2)ggplot(datasinger, aes(xheight)) geom_histogram() facet_wrap(~voice.part, nrow4)刻面图展示了歌手声部高度的分布(直方图)19.6 添加光滑曲线可以使用geom_smooth()函数来添加一系列的平滑曲线和和置信区域。选项描述method使用的平滑函数。允许的值包括lm、glm、smooth、rlm和gam分别对应线性、广义线性、loess、健壮线性和广义相加模型。smooth是默认值formula在光滑函数中使用的公式。例子包括y~x(默认)y~log(x),y~poly(x,n)表示n次多项式拟合y~ns(x,n)表示一个具有n个自由度的样条拟合se绘制置信区间(TRUE/FALSE)。默认为TRUElevel使用的置信区间水平(默认为95%)fullrange指定拟合应涵盖全图(TRUE)或仅仅是数据(FALSE)。默认为FALSE使用Salaries数据集我们先检验博士毕业年数和薪水之间的关系。在这个例子中我们可以使用带有95%置信区间的非参数光滑曲线(loess)data(Salaries, packagecar)library(ggplot2)ggplot(dataSalaries, aes(xyrs.since.phd, ysalary)) geom_smooth() geom_point()博士毕业年数与目前薪水之间的关系。加上了一个带有95%置信区间的光滑 曲线ggplot(dataSalaries, aes(xyrs.since.phd, ysalary,linetypesex, shapesex, colorsex)) geom_smooth(methodlm, formulay~poly(x,2),seFALSE, size1) geom_point(size2)按照性别来拟合一个二次多项式回归(一个弯曲)19.7 修改ggplot2图形的外观19.7.1 坐标轴ggplot2包会在创建图时自动创建刻度线、刻度标记标签和坐标轴标签。它们往往看起来不错但是有时我们需要在更大程度上控制它们的外观。函数选项scale_x_continuous()和scale_y_continuous()breaks指定刻度标记labels指定刻度标记标签limits控制要展示的值的范围scale_x_discrete()和scale_y_discrete()breaks对因子的水平进行放置和排序labels指定这些水平的标签limits表示哪些水平应该展示coord_flip()颠倒x轴和y轴data(Salaries,packagecar)library(ggplot2)ggplot(dataSalaries, aes(xrank, ysalary, fillsex)) geom_boxplot() scale_x_discrete(breaksc(AsstProf, AssocProf, Prof),labelsc(Assistant\nProfessor,Associate\nProfessor,Full\nProfessor)) scale_y_continuous(breaksc(50000, 100000, 150000, 200000),labelsc($50K, $100K, $150K, $200K)) labs(, x, y)19.7.2 图例有些时候我们需要对图例进行自定义标题位置theme()中的legend.position可能的值有left、top、right(默认值)和bottom,也可以再图中给定的位置指定一个二元素向量data(Salaries,packagecar)library(ggplot2)ggplot(dataSalaries, aes(xrank, ysalary, fillsex)) geom_boxplot() scale_x_discrete(breaksc(AsstProf, AssocProf, Prof), labelsc(Assistant\nProfessor, Associate\nProfessor, Full\nProfessor)) scale_y_continuous(breaksc(50000, 100000, 150000, 200000), labelsc($50K, $100K, $150K, $200K)) labs(, x, y, fillGender) theme(legend.positionc(.1,.8))#图例的左上角是分别距离左侧边缘10%和底部边缘80%的部分19.7.3 标尺ggplot2包使用标尺把数据空间的观察值映射到可视化的空间中可以应用于连续的变量以及离散的变量ggplot(mtcars, aes(xwt, ympg, sizedisp)) geom_point(shape21, colorblack, fillcornsilk) labs(xWeight, yMiles Per Gallon,, sizeEngine\nDisplacement) aes()函数的参数sizedisp生成连续型变量disp(发动机排量)的标尺并使用它来控制点的尺寸。结果参见如图所示的气泡图。从该图中可以看出汽车里程随重量和发动机排量的降低而降低。 在这个离散的例子中可以使用标尺将带有因子水平的视觉线索(如颜色、形状、线条类型、尺寸和透明度)关联起来。data(Salaries, packagecar)ggplot(dataSalaries, aes(xyrs.since.phd, ysalary, colorrank)) scale_color_manual(valuesc(orange, olivedrab, navy)) geom_point(size2)#设定各个组别的颜色19.7.4 主题theme()函数中的选项可以让我们调整字体、背景、颜色和网格线等。主题可以使用一次也可以保存起来应用到多个图中。data(Salaries, packagecar)library(ggplot2)mytheme axis.titleelement_text(facebold.italic,size10, colorbrown),axis.textelement_text(facebold, size9,colordarkblue),panel.backgroundelement_rect(fillwhite,colordarkblue),panel.grid.major.yelement_line(colorgrey,linetype1),panel.grid.minor.yelement_line(colorgrey,linetype2),panel.grid.minor.xelement_blank(),legend.positiontop)# 设定主题ggplot(Salaries, aes(xrank, ysalary, fillsex)) geom_boxplot() labs(, xRank, ySalary) mytheme主题mytheme指定了图的标题应该为粗斜体的棕色14号字。轴的标题为粗斜体的棕色10号字。坐标轴标签应为加粗的深蓝色9号字。画图区域有白色的填充和深蓝色的边框。主水平网格应该是灰色的实线次水平网格应该是灰色的虚线垂直网格不输出图例展示在图的顶部。theme()函数给了我们把控最后图形的控制权。可以参考help(theme)来查看更多关于选项的信息。19.7.5 多重图 我们使用图形参数mfrow和基本函数layout()把两个或更多的基本图放到单个图形中。同样这种方法在ggplot2包中不适用。将多个ggplot2包的图形放到单个图形中最简单的方式是使用gridExtra包中的grid.arrange()函数。19.8 保存图形我们可以使用1.3.4节讨论的标准方法来保存由ggplot2创建的图形但是ggsave()函数能更方便地保存它。它的选项包括保存哪幅图形保存在哪里和以什么形式保存。myplot ggsave(filemygraph.png, plotmyplot, width5, height4)如果忽略plot选项最近创建的图形会被保存。ggplot(datamtcars, aes(xmpg)) geom_histogram()ggsave(filemygraph.pdf)