ggplot2包 (4)

tidyverse的R包集合
tidyverse包括ggplot2、tibble、readr、purrr和dplyr这些包被视为tidyverse的核心,因为几乎在所有的分析中都会用到它们。
核心包有以下一些:

ggplot2 可视化数据
dplyr 数据操作语法,可以用它解决大部分数据处理问题
tidyr 清理数据
readr 读入表格数据
purrr 提供一个完整一致的工具集增强R的函数编程
tibble 新一代数据框
stringr 提供函数集用来处理字符数据
forcats 提供有用工具用来处理因子问题
library(tidyverse)
ggplot(data=<DATA>)+
<GEOM_FUNCTION>(
mapping=aes(<MAPPINGS>), stat=<STAT>, position=<POSITION>
)+
<COORDINATE FUNCTION>+
<FACET_FUNCTION>
ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy,color="blue"))
ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy),color="blue") 

6、分面(facet)

Facets是表现分类变量的一种方式。 先将数据划分为多个子集, 然后将每个子集数据绘制到页面,在同一个页面上摆放多幅图形

ggplot2提供了2种分面类型:网格型(facet_grid)和封装型(facet_wrap)。网格型生成的是一个2维的面板网格, 面板的行与列通过变量来定义, 本质是2维的; 封装型先生成一个1维的面板条块, 然后再分装到2维中, 本质是1维的。最直接的分面使用方法是 facet_grid()函数,只需要规定使用标点符号的行和列上使用的分类变量。

当一个分类变量具有多个等级(level),但并非所有level都存在于另一个变量的子集中,可以丢弃不用的level。

示例:设置scale = “free_y” 和 space = “free_y” 移除没有数据的行。.

ggplot(mamsleep, aes(x = time, y = name, col = sleep)) +
geom_point() +
facet_grid(vore ~ ., scale = "free_y", space = "free_y")
分面函数 描述
facet_grid 将分面放置在二维网格中
facet_wrap 将一维的分面按二维排列

通过单个变量对图进行分面,可以使用函数facet_wrap()。其第一个参数是一个公
式,创建公式的方式是在~符号后面加一个变量名

ggplot(data=mpg)+
  geom_point(mapping=aes(x=displ,y=hwy))+
  facet_wrap(~class,nrow=2)

在这里插入图片描述
要想通过两个变量对图进行分面,需要在绘图命令中加入函数

facet_grid()
ggplot(data=mpg)+
  geom_point(mapping=aes(x=displ,y=hwy))+
  facet_grid(drv~cyl)

在这里插入图片描述

ggplot(data=mpg)+
  geom_point(mapping=aes(x=displ,y=hwy))+
  facet_grid(drv~.)

在这里插入图片描述

ggplot(data=mpg)+
  geom_point(mapping=aes(x=displ,y=hwy))+
  facet_grid(.~cyl)

在这里插入图片描述

ggplot(data=mpg,mapping = aes(x=displ,y=hwy))+
  geom_smooth(mapping=aes(linetype=drv))+
  geom_point(mapping = aes(color=drv))

在这里插入图片描述

ggplot(data=mpg,mapping=aes(x=displ,y=hwy))+
  geom_point()+geom_smooth()
ggplot()+
  geom_point(
    data=mpg, mapping=aes(x=displ,y=hwy)
  )+
  geom_smooth(
    data=mpg, mapping=aes(x=displ,y=hwy))

在这里插入图片描述

ggplot(data=diamonds)+
  geom_bar(mapping=aes(x=cut,color=cut))

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述
ggplot2 的geom()函数(几何对象)中常涉及图形元素的位置调整position,通过不同的参数调整可以使图片呈现不同的效果,主要的位置调整涉及如下方式:

position 描述
dodge 避免重叠,并排放置
fill 堆叠图元形素并将高度标准为1
identity 不做任何调整,将每个对象直接显示在图中
jitter 给点添加扰动避免重合
stack 将图形元素堆叠起来

position="identity"将每个对象直接显示在图中。这种方式不太适合条形图,因为条形会彼此重叠。为了让重叠部分能够显示出来
,我们可以设置alpha参数为一个较小的数,从而使得条形略微透明;
或者设定fill=NA,让条形完全透明:

ggplot(  data=diamonds, mapping=aes(x=cut,color=clarity)
)+  geom_bar(fill=NA,position="identity")

在这里插入图片描述
position="fill"的效果与堆叠相似,但每组堆叠条形具有同样的高度,
因此这种条形图可以非常轻松地比较各组间的比例:

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

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

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

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

ggplot(data=mpg)+
  geom_point(
    mapping=aes(x=displ,y=hwy), position="jitter")

在这里插入图片描述
添加随机性来改善图形似乎是一种奇怪的方式,然而尽管这种方式会损失图形的精确性,但可以大大提高图形的启发性。因为这种操作的用处非常大,所以ggplot2提供了
geom point(position=“jitter”)的一种快速实现方式:geom_jitter()。

1.9坐标系

坐标系可能是ggplot2中最复杂的部分。默认的坐标系是笛卡儿直角坐标系,可以通过其独立作用的x坐标和y坐标找到每个数据点。偶尔也会用到一些其他类型的坐标系。

坐标函数 描述
coord_cartesian 笛卡儿坐标
coord_equal 等尺度坐标(斜率为1)
coord_flip 翻转笛卡儿坐标
coord_map 地图投影
coord_polar 极坐标投影
coord_trans 变换笛卡儿坐标

|·coord_flip()函数可以交换x轴和y轴。当想要绘制水平箱线图时,这非常有用。它也非常适合使用长标签,但要想在x轴上不重叠地安排好它们是非常困难的:

ggplot(data=mpg,mapping=aes(x=class,y=hwy))+
  geom_boxplot()+
  coord_flip()

在这里插入图片描述
coord_quickmap()函数可以为地图设置合适的纵横比。当使用ggplot2绘制空间数据时,这个函数特别重要

library(maps)
nz<-map_data("nz")
ggplot(nz,aes(long,lat,group=group))+
  geom_polygon(fill="white",color="black")
ggplot(nz,aes(long,lat,group=group))+
  geom_polygon(fill="white",color="black")+
  coord_quickmap()

在这里插入图片描述
coord_polar()函数使用极坐标系。可用来制作饼图。极坐标系可以揭示出条形图和鸡冠花图间的一种有趣联系:

bar<-ggplot(data=diamonds)+
geom_bar(
    mapping=aes(x=cut, fill=cut),show.legend=FALSE,width=1
  )+
  theme(aspect.ratio=1)+
  labs(x=NULL,y=NULL)
bar+coord_flip()
bar+coord_polar()

在这里插入图片描述
在这里插入图片描述

labs函数

labs 函数主要有以下三个用途:

1) 设置图片的标题(title), 子标题(subtitle), 引用(caption)

代码示例:

ggplot(mtcars, aes(mpg, wt, colour = cyl)) + 
  geom_point() + 
  labs(title = "This is title", subtitle = "This is subtitle", caption = "This is caption")

在这里插入图片描述
2) 修改图片的x轴和y轴的标题

代码示例:

ggplot(mtcars, aes(mpg, wt, colour = cyl)) + 
  geom_point() + 
  labs(x="我们",y="我")

在这里插入图片描述
3) 修改图例的标题

代码示例:

ggplot(mtcars, aes(mpg, wt, colour = cyl)) + 
  geom_point() + 
  labs(colour = "New Cyl")
发布了120 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42374697/article/details/104271721