当前位置:   article > 正文

R语言ggplot2教程 十张图带你入门ggplot2

ggplot

本文介绍ggplot2中常见的几种类型图的绘画,包括散点图、折线图、直方图、柱状图、时间序列图,由于ggplot2所用的数据格式是数据框类型的(Excel表格正常导入就是),非数据框格式的数据需先进行转换,可以利用函数data.frame()完成.

ggplot2画图的基本语法为:

  1. ggplot(data = <你的数据>,aes(x = <x轴代表什么>, y = <y轴代表什么>))+
  2. geom_point(<内写参数size:点的大小colour:点的颜色shape:形状fill:填充颜色>)+ <散点图>
  3. geom_line()+ <线形图>
  4. geom_bar()+ <柱状图>
  5. geom_boxplot()<箱图>

简而言之就是想画什么图就是在确定好映射关系后,定义geom_即可 

geom_ bar ()             条形图
geom_ boxplot ()       箱线图
geom_ density()        密度图
geom_ histogram()    直方图
geom_ hline()            水平线
geom_ jitter()             抖动点
geom_ line()              线图

geom_ point ()           散点图
geom_ rug()               地毯图
geom_ smooth()         拟合曲线
geom_ text ()              文字注解
geom_ violin()             小提琴图
geom_ v1ine ()            垂线

下面开始正文

散点图

 这里用到的数据是R语言自带数据集diamonds

  1. library (ggplot2)
  2. diamond <- diamonds[sample(nrow(diamonds),2000),]
  3. # p1 is carat~price
  4. p1 <- ggplot(data = diamond,mapping = aes(x = carat, y = price))+
  5. geom_point()+
  6. labs(title = "p1",
  7. caption = "数据来源:R语言自带数据集")
  8. print(p1)

注意labs()里面的参数所对应的位置 

图2是在图1的基础上增加一个分类依据,即在映射(mapping)中增加新的映射关系,这里是用颜色作为分类依据,所以添加 colour = color ,其中后面的color代表的是diamonds数据集中的color列 

  1. # p2 base on p1 ,add color as classification
  2. p2 <- ggplot(data = diamond,mapping = aes(x = carat, y = price,colour = color))+
  3. geom_point()+
  4. labs(title = "p2",
  5. caption = "数据来源:R语言自带数据集")
  6. print(p2)

图3与图2类似,增加以cut为依据以不同形状展示 

  1. # p3 base on p1 ,add shape as classification
  2. p3 <- ggplot(data = diamond,mapping = aes(x = carat, y = price,shape = cut))+
  3. geom_point()+
  4. labs(title = "p3",
  5. caption = "数据来源:R语言自带数据集")
  6. print(p3)

直方图 

直方图(Histogram),又称质量分布图,是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。

这里以卡方分布为例展示如何画直方图 

  1. #p4 直方图
  2. chi_square <- rchisq(1000,5) #取自由度为5卡方分布的伪随机数
  3. chi <- data.frame(X = chi_square)
  4. p4 <- ggplot(data = chi,mapping = aes(x=X),binwidth = 30)+
  5. geom_histogram(fill = "gray")+
  6. labs(title = "p4",
  7. caption = "卡方分布")
  8. print(p4)

柱状图 

柱状图也是平时生活中较常见的一类图形,首先简单构造一个数据集,再按照ggplot2的基本作图语法画即可 

  1. #p5 实际生活应用的较多的一类柱状图
  2. city <- c("北京","上海","南京","广州","深圳","哈尔滨","青岛","兰州")
  3. value <- c(150,100,-95,120,30,-60,85,75)
  4. df1 <- data.frame(city = city,value = value)
  5. p5 <- ggplot(data = df1,mapping = aes(x = city, y = value))+
  6. geom_bar(stat = "identity",fill = "pink")+
  7. labs(title = "p5",
  8. caption = "数据来源:作者瞎编")
  9. print(p5)

  1. p6 <- ggplot(data = df1,mapping = aes(x = city, y = value))+
  2. geom_bar(stat = "identity",fill = ifelse(df1$value>0,"pink","blue"))+
  3. labs(title = "p6",
  4. caption = "数据来源:作者瞎编")
  5. print(p6)

在填充颜色fill这里,我们可以用一个ifelse语句来定义大于零小于零的填充颜色

语法为:ifelse(test,yes,no) 

 折线图

折线图是反映数据趋势的一类图 ,画出一张好看的折线图关键也是在于找好映射关系

  1. p7 <- ggplot(data = BOD,mapping = aes(x=Time,y=demand))+
  2. geom_line()+
  3. geom_point()+
  4. labs(title = "p7",
  5. caption = "数据来源:R语言自带数据集")
  6. print(p7)

这里geom_point()若不加就没有这个黑点,具体可以看p10 

有时我们需要描述不同因素对同一事物的影响,这时就需要双折线图了,下面介绍如何在一张图上作出两条折线。 

  1. # ToothGrowth
  2. df2 <- ToothGrowth[c(1,11,21,31,41,51),]
  3. p8 <- ggplot(data = df2,mapping = aes(x=dose,y=len,group=supp,colour=supp))+
  4. geom_line()+
  5. geom_point()+
  6. labs(title = "p8",
  7. caption = "数据来源:R语言自带数据集")
  8. print(p8)

这里只需要增加一个新的映射关系即可,比如这个数据是不同维生素的剂量对牙齿的影响,显然应该画出每种维生素的折线,即group = supp(以supp这一列为分类依据)

 带回归拟合的折线图

 有时候我们处理一些数据,这些数据是带趋势的,我们常常会用一元线性回归拟合的方法去处理这类数据,ggplot里也提供了现成的函数方便调用,以下是示例:

  1. #线性拟合 置信区间
  2. X <- 1:50
  3. e <- rnorm(50,mean=0,sd=10)
  4. Y <- 6.3 + 3.1*X + e
  5. df3 <- data.frame(x=X,y=Y)
  6. p9 <- ggplot(data = df3,mapping = aes(x=x,y=y))+
  7. geom_point()+
  8. geom_smooth(method = "lm",se=T)+
  9. labs(title = "p9",
  10. caption = "数据来源:y=6.3+3.1*x")
  11. print(p9)

这里仅需添加geom_smooth()函数即可,method = "lm"表示用线性回归拟合,se = "T"表示显示置信区间。 

method这里同样可以选择一般线性模型glm、一般加性模型gam和曲线loess,由于我这里构造数据是线性的所有用的是"lm"

 时间序列图

  1. #时间序列图
  2. df4 <- data.frame(time = 1875:1972,height = LakeHuron)
  3. p10 <- ggplot(data = df4,mapping = aes(x=time,y=height))+
  4. geom_line()+
  5. labs(title = "p10",
  6. caption = "数据来源:R语言自带数据集")+
  7. theme_classic()
  8. print(p10)

 下篇文章介绍如何设置每类图片的参数!!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/132112?site
推荐阅读
相关标签
  

闽ICP备14008679号