R语言ggplot2绘图

R语言绘图之ggplot2

  • 一.绘图的基本要素
    • 1.图形映射
    • 2.分面:
    • 3.添加平滑曲线
  • 二.绘制条形图
  • 设置坐标抽格式

一.绘图的基本要素

首先载入tidyverse包

 install.packages("tidyverse")
library(tidyverse)

​​​​这一行代码加载了tidyverse的核心R包。在几乎所有的数据分析任务中,你都会用到这些R包。这行代码还会告诉你tidyverse中的哪些函数与基础R包(或者已加载的其他R包)中的函数有冲突。
​​​​
​​R语言ggplot2绘图_第1张图片
本文使用r语言自带的数据框,mpg来操作
​​
R语言ggplot2绘图_第2张图片

1.绘制基础散点图:

mpg
ggplot(mpg,aes(displ,hwy))+geom_point()

R语言ggplot2绘图_第3张图片

注意ggplot只接受数据框格式,,aes()函数的x参数和y参数分别指定了映射到x轴的变量与映射到y轴的变量。ggplot2在data参数中寻找映射变量,本例中就是mpg。

aes(displ,hwy)分别是x轴和y轴,geom_point()是绘制散点图

可以看出随着displ的增大,hwy总体是减少的。
你是否发现,虽然数据集中有234个观测值,但散点图中只显示了126个点?因为hwy和displ的值都进行了舍入取整,所以这些点显示在一个网格上时,很多点彼此重叠了。这个问题称为过绘制.
通过将位置调整方式设为“抖动”,可以避免这种网格化排列。**position = “jitter”**为每个数据点添加一个很小的随机扰动,这样就可以将重叠的点分散开来,因为不可能有两个点会收到同样的随机扰动:

 ggplot(mpg,aes(displ,hwy))+geom_point(position = "jitter")

R语言ggplot2绘图_第4张图片

1.图形映射

这些车有不同的类型,通过color=class可以为不同的种类添加颜色

ggplot(mpg,aes(displ,hwy))+geom_point(aes(color=class))

R语言ggplot2绘图_第5张图片

如果你想设置图片整体为单个颜色,比如蓝色,只需要:

ggplot(mpg,aes(displ,hwy))+geom_point(color="blue")

R语言ggplot2绘图_第6张图片

但是如果你这么输入:

ggplot(mpg,aes(displ,hwy))+geom_point(aes(color="blue"))

将不会达到你想要的结果,
R语言ggplot2绘图_第7张图片

可以看到输出结果是红色,不是蓝色,事实上你把bule改为任何颜色结果都是红色,因为aes是分别映射。

你也通过alpha=class,将class映射为控制数据透明度alpha图片属性

ggplot(mpg,aes(displ,hwy))+geom_point(aes(color=class,alpha=class))

R语言ggplot2绘图_第8张图片

不过会出现警告信息:

离散变量不建议使用

也可以使用shape为不同的种类添加不同的形状

ggplot(mpg,aes(displ,hwy))+geom_point(aes(color=class,shape=class))

R语言ggplot2绘图_第9张图片

虽然能输出,但suv这里是空的,gplot2只能同时使用6种形状。默认情况下,当使用这种图形属性时,多出的变量值将不会出现在图中。

2.分面:

添加额外变量的一种方法是使用图形属性。另一种方法是将图分割成多个分面,即可以显示数据子集的子图。这种方法特别适合添加分类变量。

要想通过单个变量对图进行分面,可以使用函数facet_wrap()。其第一个参数是一个公式,创建公式的方式是在~符号后面加一个变量名(这里所说的“公式”是R中的一种数据结构,不是数学意义上的公式)。传递给facet_wrap()的变量应该是离散型的。

ggplot(mpg,aes(displ,hwy))+geom_point(aes(color=class))+facet_wrap(~class,nrow=2)

R语言ggplot2绘图_第10张图片
这里就对车的不同类型完成了分面。
要想通过两个变量对图进行分面,需要在绘图命令中加入函数facet_grid()。这个函数的第一个参数也是一个公式,但该公式包含由~隔开的两个变量名。

R语言ggplot2绘图_第11张图片

3.添加平滑曲线

只需要把geom_point改为geom_smooth

ggplot(mpg,aes(displ,hwy))+geom_smooth(aes(linetype=drv,color=drv))

R语言ggplot2绘图_第12张图片

二.绘制条形图

这里用的是r语言的数据diamonds
diamonds数据集是ggplot2的内置数据集,包含大约54 000颗钻石的信息,每颗钻石具有price、carat、color、clarity和cut变量。条形图显示,高质量切割钻石的数量要比低质量切割钻石的数量多,这里使用了fill=cut来填充颜色

ggplot(diamonds,aes(x=cut,fill=cut))+geom_bar()

R语言ggplot2绘图_第13张图片
如果将fill图形属性映射到另一个变量(如clarity),那么条形会自动分块堆叠起来。每个彩色矩形表示cut和clarity的一种组合。这种堆叠是由position参数设定的位置调整功能自动完成的

ggplot(diamonds,aes(x=cut,fill=clarity))+geom_bar()

R语言ggplot2绘图_第14张图片

如果不想生成堆叠式条形图,你还可以使用以下3种选项之一:“identity”、“fill"和"dodge”
position = "fill"的效果与堆叠相似,但每组堆叠条形具有同样的高度,因此这种条形图可以非常轻松地比较各组间的比例:

ggplot(diamonds,aes(x=cut,fill=clarity))+geom_bar(position="fill")

R语言ggplot2绘图_第15张图片

position = "dodge"将每组中的条形依次并列放置,这样可以非常轻松地比较每个条形表示的具体数值:

ggplot(diamonds,aes(x=cut,fill=clarity))+geom_bar(position="dodge")

R语言ggplot2绘图_第16张图片

设置坐标抽格式

ggplot(data = diamonds) +  
  geom_bar(  mapping = aes(x = cut, fill = cut),  show.legend = FALSE,  width = 1  ) +  
  theme(aspect.ratio = 1) + 
  labs(x = "cut", y = "数目")

R语言ggplot2绘图_第17张图片

你可能感兴趣的:(r语言,数据分析,开发语言)