R语言小白学习笔记4—统计图

笔记链接

学习笔记1—R语言基础.
学习笔记2—高级数据结构.
学习笔记3—R语言读取数据.

学习笔记4—统计图

数据分析的难点之一是数据可视化,R语言的基础安装包插件包(如lattice和ggplot2)都能提供优秀的数据可视化能力。

4.1 基础统计图

展示图片前需要一些数据,这里用ggplot2包中的数据。
首先加载包,然后导入diamonds数据:

> library(ggplot2)
> data(diamonds)
> head(diamonds)
# A tibble: 6 x 10
  carat cut   color clarity depth table price     x     y
  <dbl> <ord> <ord> <ord>   <dbl> <dbl> <int> <dbl> <dbl>
1 0.23  Ideal E     SI2      61.5    55   326  3.95  3.98
2 0.21  Prem~ E     SI1      59.8    61   326  3.89  3.84
3 0.23  Good  E     VS1      56.9    65   327  4.05  4.07
4 0.290 Prem~ I     VS2      62.4    58   334  4.2   4.23
5 0.31  Good  J     SI2      63.3    58   335  4.34  4.35
6 0.24  Very~ J     VVS2     62.8    57   336  3.94  3.96
# ... with 1 more variable: z <dbl>

4.1.1基础直方图

单变量数据最常用的图表是直方图,直方图展示数据的分布
这里展示diamonds数据集的carat列:

> hist(diamonds$carat, main="Carat Histogram", xlab="Carat")

其中标题用main参数设置,x轴用xlab参数设置:
diamond的carat列的直方图
复杂的直方图用ggplot2包创建更简单。

4.1.2基础散点图

比较两个变量适合采用散点图

下面绘制diamonds数据集的价格(price)和carat的散点图:

> plot(price ~ carat, data=diamonds)

符号~代表:y为price,x为carat

也可以不用符号~,直接简单指定x变量和y变量:

> plot(diamonds$carat, diamonds$price)

在这里插入图片描述

4.1.3箱线图

R语言用boxplot函数绘制箱线图:

> boxplot(diamonds$carat)

在这里插入图片描述
箱线图的原理是用箱内中间粗的中间线代表数据的中位数,箱的边界是第一和第三分位

也就是说,50%的数据(四分位差,IQR)都集中在箱内。并且,向上下各延伸出1.5倍的IQR长度的线,在这两条平行线之外的数据称为异常点。

4.2 ggplot2

使用ggplot2软件包很容易用颜色、形状或者大小来描述数据,添加图例注释也很简单,构建图表也很快。

ggplot2使用ggplot函数开始构建初始图层,其中第一个参数传入数据。

初始化图层后通过**"+"符号来增加图层**。其中使用aes函数指定数据映射的轴或者其他图形元素。

4.2.1 ggplot2:直方图和核密度曲线

直方图:

用ggplot函数和geom_histogram函数绘制diamonds的carat变量分布图,因为是一维,所以只设置x轴一个图形映射:

> ggplot(data=diamonds) + geom_histogram(aes(x=carat))

在这里插入图片描述
核密度曲线:

使用geom_density函数,fill参数指定图填充的颜色,与后边的color参数不同:

> ggplot(data=diamonds) + geom_density(aes(x=carat), fill="grey50")

在这里插入图片描述
直方图显示数据的数量,核密度曲线表示的是关注的变量落在滑窗内的观测数据的概率

直方图是离散变量的度量,而核密度曲线是连续变量的度量。

4.2.2 ggplot2:散点图

先绘制简单的散点图:

和之前相同,使用ggplot函数初始化图层,但这次将aes函数放入ggplot函数内。

> ggplot(data=diamonds, aes(x=carat, y=price)) + geom_point()

在这里插入图片描述
因为下边会不断使用ggplot(data=diamonds, aes(x=carat, y=price)),所以可以使用一个对象

> g <- ggplot(data=diamonds, aes(x=carat, y=price))

接下来加入g变量重新画散点图,加入color变量,将其映射到图形的color属性:

> g + geom_point(aes(color=color))

在这里插入图片描述
这里color=color代表图的颜色由数据决定。

这里不理解的可以看上节diamonds的数据集,里边是有各个变量的。

绘制分面图:

绘制分面图需要使用facet_wrap函数或者facet_grid函数。

facet_wrap函数根据传入的变量水平(level)将数据切分,并将切分后的数据绘制到不同的面板中:

> g + geom_point(aes(color=color)) + facet_wrap(~color)

在这里插入图片描述
facet_gird函数与facet_wrap类似,但它把变量的所有水平分配到行或者列上

> g + geom_point(aes(color=color)) + facet_grid(cut~clarity)

在这里插入图片描述
左上面板显示数据集diamonds中Fair cut与I1 clarity的散点图。

右边面板是Fair cut与SI2 clarity的散点图。

第二行第一列的面板是Good cut与I1 clarity的散点图。

分面图对于直方图或者其他几何图形也适用:

> ggplot(diamonds, aes(x=carat)) + geom_histogram() + facet_wrap(~color)

在这里插入图片描述

4.2.3:箱线图和小提琴图

ggplot2提供了geom_boxplot函数绘制箱线图,尽管它只是y轴的一维图形,但有时也会添加x轴,此时设为1:

> ggplot(diamonds, aes(y=carat, x=1)) + geom_boxplot()

在这里插入图片描述
继而可以根据变量的level在同一面板绘制多个箱线图

> ggplot(diamonds, aes(y=carat, x=cut)) + geom_boxplot()

在这里插入图片描述
使用geom_violin函数可以绘制小提琴图:

> ggplot(diamonds, aes(y=carat, x=cut)) + geom_violin()

在这里插入图片描述
小提琴图和箱线图类似,除了箱边界采用的是曲线之外,它表示数据的核密度

可以在同一幅图中使用多个图层

数据点在小提琴图下边:

> ggplot(diamonds, aes(y=carat, x=cut)) + geom_point() + geom_violin()

在这里插入图片描述
数据点在小提琴图上边:

> ggplot(diamonds, aes(y=carat, x=cut)) + geom_violin() + geom_point()

在这里插入图片描述

4.2.4 ggplot2:曲线图

曲线图经常用来描述一个连续的变量

绘制economics数据的曲线:

> ggplot(economics, aes(x=date, y=pop)) + geom_line()

在这里插入图片描述
绘制曲线图中最常见的任务是显示多个年份里每年的指标。
这里用lubridate包来展现economics数据,其中有方便的函数处理日期变量。
先创建两个变量:year和month,为了简单起见,采用2000年起的数据:

> economics$year <- year(economics$date)
> economics$month <- month(economics$date, label=TRUE)
> econ2000 <- economics[which(economics$year >= 2000), ]
> library(scales)
> g <- ggplot(econ2000, aes(x=month, y=pop))
> g <- g + geom_line(aes(color=factor(year), group=year))
#为每年绘制曲线图并上色,这里将year变量转换为factor,得到离散的色阶
> g <- g + scale_color_discrete(name="Year")
#命名标尺
> g <- g + scale_y_continuous(labels = comma)
#格式化y轴标度
> g <- g + labs(title = "Population Growth", x="Month", y="Population")
#设置x轴标签、y轴标签和标题
> g

在这里插入图片描述

4.2.5主题

ggplot2的一大优势是可以设置主题来轻松改变图形的外观。这里采用ggthemes包里的主题。

样式1:The Economist

> library(ggthemes)
> g2 <- ggplot(diamonds, aes(x=carat, y=price)) + geom_point(aes(color=color))
> g2 + theme_economist() + scale_colour_economist()

在这里插入图片描述
样式2:Excel

> g2 + theme_economist() + scale_colour_economist()

在这里插入图片描述
样式3:Edward Tufte

> g2 + theme_tufte()

在这里插入图片描述
样式4:Wall Street Journal

> g2 + theme_wsj()

在这里插入图片描述

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值