R语言可视化及作图6--ggplot2之点图、条形图、盒形图、直方图、线图

Python038

R语言可视化及作图6--ggplot2之点图、条形图、盒形图、直方图、线图,第1张

R语言绘图系列:

标度控制着数据到图形属性的映射,标度将我们的数据转化为视觉上可以感知的东西,比如大小、位置、颜色、形状等。标度也为我们提供了读图时所使用的工具,比如说坐标轴和图例。总的来说,可以称为引导元素。标度函数控制元素的属性,可以理解为图形的遥控器,可以用它来调整画布大小、颜色等等。此前学的shape,color,size等参数和标度函数相比显得不够灵活。

scale_fill_brewer 调色板函数

geom_errorbar()

geom_crossbar()

geom_linerange() 绘制线段

geom_pointrange() 绘制点

pointrange:点画线

首先绘制一张盒形图

在图上显示出观测值

值得注意的是,图上点的多少并不能完全反应原始数据的多少,因为有的点可能因为点过于密集就会被覆盖,看起来是一个点,其实可能是多个点。

因此可以使用geom_jitter函数将不同的点区分开(jitter是震荡散点),width设置如果遇到相同的点,点向左右方平移的距离。alpha设置透明度。

黑色点是离群点

还可以绘制卡槽图

varwidth参数会根据该水平下观测值的个数(n值)改变盒形图的宽度。(这里宽度去的不是观测个数的绝对值,而是平方根,以缩小差距。)

给盒子上色

分组盒形图,用不同颜色区分

画水平的盒形图

使用coord_flip函数(坐标轴翻转函数)

绘制一张直方图

bins可以设置直方图条柱的数目,默认为30。当bins和binwidth(设置条柱宽度)同时设置时,默认以binwidth为准。

新加入变量cut,根据新变量在price水平上进行一个计数

y轴由count变为density,绘制概率密度

注意下面density的写法,前后都要加..

绘制概率密度曲线:geom_density函数

堆栈密度概率曲线

geom_line/geom_path/geom_step

绘制一个简单的线图

绘制点线图,点和线需要分别添加。

如上图,线在点之上,是因为先投射了点,又投射了线。

先投射线,点就出现在了线之上。

线的颜色出现了渐变

geom_smooth函数:绘制拟合曲线

methods还有其他的方法,如glm:广义线性模型;losses:纯粹平滑;gam:广义加性模型等等(lm和glm最常用)

geom_hline绘制水平线,geom_vline绘制垂直线。xintercept和yintercept是截距,slope是斜率。

箱线图主要是通过四分位数描述数据分布,通过最大值,上四分位数,中位数,下四分位数,最小值五处位置描述数据分布情况。箱线图能够显示出可能为离群点(范围±1.5*IQR以外的值,IQR表示四分位距,即上四分位数与下四分位数的差值)的观测。从箱线图中,可以大致推断出数据的集中或离散趋势。

boxplot() 是一个泛型函数,目前支持两种参数类型:公式和数据。

x 参数为一个数值向量或者列表,若为列表则对列表中每一个子对象依次作出箱线图。

formula 为一个公式,比如 y ~ x。

data 参数为一个数据框或者列表。

na.action 参数是对NA值的操作,默认为忽略。

ann 参数为逻辑值,是否绘制坐标轴。

range 是一个延伸倍数,决定了箱线图的须延伸到什么位置。

width 设置箱子的宽度。

varwidth 为逻辑值,若为 TRUE,那么箱子的宽度与样本量的平方根成比例。

notch 决定了是否在箱子上画凹槽,可以用于比较两组数据的中位数是否有差异。

horizontal 是否水平放置箱线图。

add 参数设置是否将箱线图添加到现有图形上。

at 参数,当add为TRUE时,设置箱线图位置。

[1] https://www.sohu.com/a/220236877_434937

[2] https://zhuanlan.zhihu.com/p/144339417

[3] Robert I. Kabacoff (著). R语言实战(高涛/肖楠/陈钢 译). 北京: 人民邮电出版社.

#使用并列箱线图进行跨组比较,如图6-12#公式y~A*B则将为类别型变量A和B所有水平的两两组合生成数值型变量y的箱线图, 例子的mpg~cyl表示为四缸、六缸、八缸发动机对每加仑汽油行驶的英里数的影响。boxplot(mpg~cyl,data=mtcars,main="Car Mileage Data",xlab="Number of Cylinders",ylab="Miles Per Gallon")

#添加notch=TRUE,可以得到含凹槽的箱线图, 若两个箱的凹槽互不重叠, 则表明它们的中位数有显著差异; 而

varwidth=TRUE则使箱线图的宽度与它们各自的样本大小成正比。>boxplot(mpg~cyl,data=mtcars,notch=TRUE,varwidth=TRUE,col="red",main="Car Mileage Data",xlab="Number of Cylinders",ylab="Miles Per Gallon")

输出结果如下