1.初识ggplot2
1.1 功能
是一个作图包;
可以创建图表,如散点,柱状图,线图,将数据可视化;
1.2 要素
数据(Data)和映射(Mapping)
几何对象(Geometric)
标尺(Scale)
统计变换(Statistics)
坐标系统(Coordinante)
图层(Layer)
分面(Facet)
主题(Theme)
1.3 理念
ggplot2将数据,数据到图形要素的映射,以及和数据无关的图形要素绘制分离。
~~~
ggplot(data,aes(x,y)) + 初始化图形并指定数据源和作图变量
geom_type()+ 指定图形的类型
annotate()+ 添加文本注释
labs()+ 修改住坐标和坐标轴标题
~~~
1.4逻辑
按图层叠加作图,通过+进行叠加
2 作图
2.1散点图
ggplot(data,aes(mpg,x,y))+geom_point()
~~~
install.packages("ggplot2")
#加载需要使用的包
library(ggplot2)
ggplot(mtcars,aes(mpg,wt))+geom_point()
~~~
2.2线形图
ggplot(data,aes(mpg,x,y))+geom_line()
2.3 柱状图
查看频率分布情况:
ggplot(data,aes(x))+geom_bar()
~~~
ggplot(mtcars,aes(cyl))+geom_bar()
ggplot(mtcars,aes(factor(cyl)))+geom_bar()
~~~
"""
#堆积柱形图
ggplot(mtcars,aes(factor(cyl),fill=factor(am)))+geom_bar()
"""
~~~
#簇状柱形图
bggplot(mtcars,aes(factor(cyl),fill=factor(am)))+geom_bar(position="dodge")
~~~
2.4 直方图
查看变量的分布情况
ggplot(data,aes(x))+geom_hisogram()
~~~
ggplot(mtcars,aes(mpg))+geom_histogram()
~~~
2.5 密度图
查看变量频率分布情况;
ggplot(data,aes(x))+geom_density()
~~~
#根据vs进行分组,
#color:是对图形的边缘、点和线进行描绘;
#fill 是进行填充
ggplot(mtcars,aes(mpg,color=factor(vs)))+geom_density()
ggplot(mtcars,aes(mpg,fill=factor(vs)))+geom_density()
~~~
2.6 箱线图
查看变量的统计值分布
ggplot(data,aes(分类变量x,y))+geom_boxplot()
~~~
> ggplot(mtcars,aes(factor(vs),mpg))+geom_boxplot()
~~~
3.分组组图
3.1
~~~
ggplot(mtcars,aes(wt,mpg,color=qsec))+geom_point()
~~~
~~~
#进行分组
ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()
~~~
3.2 aes参数
统一图层的颜色,参数在aes外面
4 分面作图
下面是两个经常要用到的分面函数。
facet_wrap(facets, nrow = NULL, ncol = NULL, scales = "fixed", shrink = TRUE, as.table = TRUE, drop = TRUE)
facet_grid(facets, margins = FALSE, scales = "fixed", space = "fixed", shrink = TRUE, labeller = "label_value", as.table = TRUE, drop = TRUE)
其中facet_wrap和facet_grid不同在于facet_wrap是基于一个因子进行设置,facets表示形式为:~变量(~单元格) 而facet_grid是基于两个因子进行设置,facets表示形式为:变量~变量(行~列),如果把一个因子用点表示,也可以达到facet_wrap的效果,也可以用加号设置成两个以上变量
4.1 轴刻度一致
单变量作图
~~~
ggplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(vs~.)
~~~
~~~
gplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(.~vs)
~~~
双变量作图
4.2 轴刻度不一致
不同纵轴刻度
不同横轴刻度
~~~
ggplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(~vs,scales="free")
~~~
nrow,ncol 分面索要设置成的行和列,参数为数值,表示几行或者几列
scales 参数fixed表示固定坐标轴刻度,free表示反馈坐标轴刻度,也可以单独设置成free_x或free_y
shrink 也和坐标轴刻度有关,如果为TRUE(默认值)则按统计后的数据调整刻度范围,否则按统计前的数据设定坐标。
drop 表示是否去掉没有数据的分组,默认情况下不显示,逻辑值为FALSE
as.table 和小图排列顺序有关的选项。如果为TRUE(默认)则按表格方式排列,即最大值(指分组level值)排在表格最后即右下角,否则排在左上角。
margins 通过TRUE或者FALSE表示否设置而一个总和的分面变量,默认情况为FALSE,即不设置
space 表示分面空间是否可以按照数据进行缩放,参数和scales一样
5.调整图像的元素
5.1形状
形状:geom_XXX(shape=x),x=1,2,3...,不同数值是不同的形状
大小:size=x,x=1,2,3...,数值越大,尺寸越大
5.2 颜色
color:是对图形的边缘、点和线进行描绘;
fill:填充图形内部的颜色
指定填充一种颜色:直接在aes外部填写,color="某种颜色”
5.3文本注释
annotate("text",x=,y=,label="")
text :表示添加类型为文本
x=,y=表示在指定位置上放上文本
label :表示填写的文本内容
5.4标题:
labs(little ="",x="",y="")
5.5 加线条
加竖线:geom_vline(xintercept=)
加横线:geom_hline(yintercept=)
5.6 xy轴互换
coord_flip()
5.7调整轴刻度的范围
x轴:xlim(下限,上限)
y轴:ylim(下限,上限)
5.8 修改轴上的值
X:scale_x_continuous(breaks(),labels=c()
Y:scale_y_continuous(breaks(),labels=c()
~~~
ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()+annotate("text",x=4,y=20,label="yes")+labs(title="hello",x="xxx",y="yyy")+geom_vline(xintercept=3)+geom_hline(yintercept=20)+xlim(3,4)+ylim(15,25)
~~~
~~~
ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()+annotate("text",x=4,y=20,label="yes")+labs(title="hello",x="xxx",y="yyy")+geom_vline(xintercept=3)+geom_hline(yintercept=20)+xlim(3,4)+ylim(15,25)+scale_x_continuous(breaks = c(3.00,3.25,3.50,3.75,4.00),labels=c("a","b","c","d","e"))
~~~