1. ggplot2的安装:install.packages("ggplot2")。
2. ggplot2的绘图原理: ggplot2的核心理念是将绘图与数据分离,数据相关的绘图与数据无关的绘图分离,并按图层作图。
ggplot的绘图有以下几个特点:第一,有明确的起始(以ggplot函数开始)与终止(一句语句一幅图);其二,图层之间的叠加是靠“+”号实现的,越后面其图层越高。
ggplot图的元素可以主要可以概括如下:最大的是plot(指整张图,包括background和title),其次是axis(包括stick,text,title和stick)、legend(包括backgroud、text、title)、facet这是第二层次,其中facet可以分为外部strip部分(包括backgroud和text)和内部panel部分(包括backgroud、boder和网格线grid,其中粗的叫grid.major,细的叫grid.minor)。
3. ggplot2的函数介绍:
ggplot2里的所有函数可以分为以下几类:
用于运算(我们在此不讲,如fortify_,mean_等)
初始化、展示绘图等命令(ggplot,plot,print等)
按变量组图(facet_等)
真正的绘图命令(stat_,geom_,annotate),这三类就是实现一个函数一个图层的核心函数。
微调图型:严格意义上说,这一类函数不是再实现图层,而是在做局部调整。
aes : 同样适用于修改geom_XXX() aes参数控制了对哪些变量进行图形映射,以及映射方式
图形属性(aes)横纵坐标、点的大小、颜色,填充色等
几何对象函数 | 描述 |
---|---|
geom_abline | 线图,由斜率和截距指定 |
geom_area | 面积图(即连续的条形图) |
geom_bar | 条形图 |
geom_bin2d | 二维封箱的热图 |
geom_blank | 空的几何对象,什么也不画 |
geom_boxplot | 箱线图 |
geom_contour | 等高线图 |
geom_crossbar | crossbar图(类似于箱线图,但没有触须和极值点) |
geom_density | 密度图 |
geom_density2d | 二维密度图 |
geom_errorbar | 误差线(通常添加到其他图形上,比如柱状图、点图、线图等) |
geom_errorbarh | 水平误差线 |
geom_freqpoly | 频率多边形(类似于直方图) |
geom_hex | 六边形图(通常用于六边形封箱) |
geom_histogram | 直方图 |
geom_hline | 水平线 |
geom_jitter | 点、自动添加了扰动 |
geom_line | 线 |
geom_linerange | 区间,用竖直线来表示 |
geom_path | 几何路径,由一组点按顺序连接 |
geom_point | 点 |
geom_pointrange | 一条垂直线,线的中间有一个点(与Crossbar图和箱线图相关,可以用来表示线的范围) |
geom_polygon | 多边形 |
geom_quantile | 一组分位数线(来自分位数回归) |
geom_rect | 二维的长方形 |
geom_ribbon | 彩虹图(在连续的x值上表示y的范围,例如Tufte著名的拿破仑远征图) |
geom_rug | 触须 |
geom_segment | 线段 |
geom_smooth | 平滑的条件均值 |
geom_step | 阶梯图 |
geom_text | 文本 |
geom_tile | 瓦片(即一个个的小长方形或多边形) |
geom_vline | 竖直线 |
统计变换函数 | 描述 |
---|---|
stat_abline | 添加线条,用斜率和截距表示 |
stat_bin | 分割数据,然后绘制直方图 |
stat_bin2d | 二维密度图,用矩阵表示 |
stat_binhex | 二维密度图,用六边形表示 |
stat_boxplot | 绘制带触须的箱线图 |
stat_contour | 绘制三维数据的等高线图 |
stat_density | 绘制密度图 |
stat_density2d | 绘制二维密度图 |
stat_function | 添加函数曲线 |
stat_hline | 添加水平线 |
stat_identity | 绘制原始数据,不进行统计变换 |
stat_qq | 绘制Q-Q图 |
stat_quantile | 连续的分位线 |
stat_smooth | 添加平滑曲线 |
stat_spoke | 绘制有方向的数据点(由x和y指定位置,angle指定角度) |
stat_sum | 绘制不重复的取值之和(通常用在三点图上) |
stat_summary | 绘制汇总数据 |
stat_unique | 绘制不同的数值,去掉重复的数值 |
stat_vline | 绘制竖直线 |
标度函数 | 描述 |
---|---|
scale_alpha | alpha通道值(灰度) |
scale_brewer | 调色板,来自colorbrewer.org网站展示的颜色标度 |
scale_continuous | 连续标度 |
scale_data | 日期 |
scale_datetime | 日期和时间 |
scale_discrete | 离散值 |
scale_gradient | 两种颜色构建的渐变色 |
scale_gradient2 | 3中颜色构建的渐变色 |
scale_gradientn | n种颜色构建的渐变色 |
scale_grey | 灰度颜色 |
scale_hue | 均匀色调 |
scale_identity | 直接使用指定的取值,不进行标度转换 |
scale_linetype | 用线条模式来展示不同 |
scale_manual | 手动指定离散标度 |
scale_shape | 用不同的形状来展示不同的数值 |
scale_size | 用不同大小的对象来展示不同的数值 |
坐标函数 | 描述 |
---|---|
coord_cartesian | 笛卡儿坐标 |
coord_equal | 等尺度坐标(斜率为1) |
coord_flip | 翻转笛卡儿坐标 |
coord_map | 地图投影 |
coord_polar | 极坐标投影 |
coord_trans | 变换笛卡儿坐标 |
分面函数 | 描述 |
---|---|
facet_grid | 将分面放置在二维网格中 |
facet_wrap | 将一维的分面按二维排列 |
定位函数 | 描述 |
---|---|
position_dodge | 并列 |
position_fill | 填充 |
position_identity | 不对位置进行处理 |
position_jitter | 扰动处理 |
position_stack | 堆叠处理 |
4. ggplot2的应用语法
ggplot(data =, aes(x = , y = )) +
geom_XXX(...)+ ... + stat_XXX(...) + ... +
annotate(...)+ ... + labs(...) +
scale_XXX(...)+ coord_XXX(...) + guides(...) + theme(...) +
facet_XXX(...)
geom :表示几何对象,它是ggplot中重要的图层控制对象,因为它负责图形渲染的类型。
几何对象(geom_)上面指定的图形属性需要呈现在一定的几何对象上才能被我们看到,这些承载图形属性的对象可能是点,可能是线,可能是bar
stat :统计变换比如求均值,求方差等,当我们需要展示出某个变量的某种统计特征的时候,需要用到统计变换
annotate:添加注释 #由于设置的文本会覆盖原来的图中对应的位置,可以改变文本的透明度或者颜色例:annotate(geom='text')会向图形添加一个单独的文本对象 annotate("text",x=23,y=200,parse=T,label ="x[1]==x[2]")
labs : labs(x= "这是 X 轴", y = "这是 Y 轴", title = "这是标题") ## 修改文字
scale_: 标度是一种函数,它控制了数学空间到图形元素空间的映射。一组连续数据可以映射到X轴坐标,也可以映射到一组连续的渐变色彩。一组分类数据可以映射成为不同的形状,也可以映射成为不同的大小,这就是与aes内的各种美学(shape、color、fill、alpha)调整有关的函数。
coord_:调整坐标,控制了图形的坐标轴并影响所有图形元素. 调整坐标 coord_flip()来翻转坐标轴。使用xlim()和ylim()来设置连续型坐标轴的最小值和最大值 coord_cartesian(xlim=c(0,100),ylim=c(0,100))
guides:调整所有的text。
theme:调整不与数据有关的图的元素的函数。theme函数采用了四个简单地函数来调整所有的主题特征:element_text调整字体,element_line调整主题内的所有线,element_rect调整所有的块,element_blank清空。theme(panel.grid =element_blank()) ## 删去网格线
facet :控制分组绘图的方法和排列形式。