R语言—ggplot2简单学习


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 逻辑

  • 按照图层进行叠加,通过“+”进行叠加

1.5 一些作图中用的函数

函数 添加 选项
geom_bar() 条形图 color、fill、alpha
geom_boxplot() 箱型图 color、fill、alpha、notch、width
geom_density() 密度图 color、fill、alpha、linetype
geom_histogram() 直方图 color、fill、alpha、linetype、binwidth
geom_hline() 水平线 color、alpha、linetype、size
geom_jitter() 抖动点 color、size、alpha、shape
geom_line() 线图 colorvalpha、linetype、size
geom_point() 散点图 color、alpha、shape、size
geom_rug() 地毯图 color、side
geom_smooth() 拟合曲线 method、formula、color、fill、linetype、size
geom_text() 文字注解 很多
geom_violin() 小提琴图 color、fill、alpha、linetype
geom_vline() 垂线 color、alpha、linetype、size

2 作图

2.1 散点图

library(ggplot2)

ggplot(mtcars,aes(mpg,wt))+geom_point

image-20211115174729192

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()

image-20211115215054690

  • 堆积柱形图
ggplot(mtcars,aes(factor(cyl),fill=factor(am)))+geom_bar()

image-20211116144854642

  • 簇状柱形图
ggplot(mtcars,aes(factor(cyl),fill=factor(am)))+geom_bar(position="dodge")

image-20211116151037277

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()

image-20211116153319136

ggplot(mtcars,aes(mpg,fill=factor(vs)))+geom_density()

image-20211116153528169

2.6 箱型图

  • 查看变量的统计值分布

    ggplot(data,aes(分类变量x,y))+geom_boxplot()

    ggplot(mtcars,aes(factor(vs),mpg))+geom_boxplot()
    
    image-20211116154436439

3 分组组图

3.1

ggplot(mtcars,aes(wt,mpg,color=qsec))+geom_point()

image-20211116154713881

  • 进行分组
ggplot(mtcars,aes(wt,mpg,color=factor(vs)))+geom_point()

image-20211116154912647

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~.)
    
    image-20211116162142004
    gplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(.~vs)
    
    image-20211116162244239

4.2 刻度不一致

不同纵轴刻度

不同横轴刻度

ggplot(mtcars,aes(wt,mpg))+geom_point()+facet_grid(~vs,scales="free")
image-20211116164658182

​ # 这里把scales 设置成free之后,可以看出每个分面都有自己的横坐标刻度,可以单独对x轴或y轴设置

  • 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)
image-20211116170116860
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"))
image-20211116170418746


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM