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

ggplot2画图的基本语法为:

ggplot(data = <你的数据>,aes(x = <x轴代表什么>, y = <y轴代表什么>))+geom_point(<内写参数size:点的大小colour:点的颜色shape:形状fill:填充颜色>)+ <散点图>geom_line()+  <线形图>geom_bar()+   <柱状图>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

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

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

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

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

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

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

直方图

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

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

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

柱状图

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

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

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

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

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

折线图

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

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

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

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

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

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

带回归拟合的折线图

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

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

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

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

时间序列图

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

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

R语言ggplot2教程 十张图带你入门ggplot2相关推荐

  1. %3c- r语言运算符,R语言基础教程之运算符

    原标题:R语言基础教程之运算符 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符1.算术运算符 下表显示了R语言支持的算术运算符.运算符对向量的 ...

  2. R语言编写自定义函数、创建使用ggplot2生成图标(icon)的主题(theme)函数、使用ggplot2以及自定义的图标主题函数创建箱图(boxplot)图标、ggsave保存图标(png、svg

    R语言编写自定义函数.创建使用ggplot2生成图标(icon)的主题(theme)函数.使用ggplot2以及自定义的图标主题函数创建箱图(boxplot)图标.ggsave保存图标(png.svg ...

  3. R语言可视化分别使用lattice包和ggplot2包可视化热图(heatmap)并绘制热力图对应的系统树图(dendrogram)实战

    R语言可视化分别使用lattice包和ggplot2包可视化热图(heatmap)并绘制热力图对应的系统树图(dendrogram)实战 目录

  4. 《量化金融R语言初级教程》一2.6 如果方差不够用

    本节书摘来异步社区<量化金融R语言初级教程>一书中的第2章,第2.6节,作者: [匈牙利]Gergely Daróczi(盖尔盖伊) , 等 译者: 高蓉 , 李茂 责编: 胡俊英,更多章 ...

  5. R语言系统教程(三):多维数组和矩阵

    R语言系统教程(三):多维数组和矩阵 3.1 生成数组或矩阵 3.1.1 将向量定义为数组 3.1.2 用array()函数构造多维数组 3.1.3 用matrix()函数构造矩阵 3.2 数组下标 ...

  6. 对英国房屋价格建模并预测 ---《量化金融R语言初级教程》

    时间序列分析 一.实验介绍 1.1 实验内容 时间序列分析研究的是按时间顺序收集的数据.相邻的观测数据通常相互依赖.因此,时间序列分析的技术需要处理这种相依性. 本章的目标是通过一些特定应用来介绍一些 ...

  7. R语言基础教程6:程序设计基础

    R语言基础教程1:数据类型 R语言基础教程2:散点图 R语言基础教程3:曲线图.误差线和图例 R语言基础教程4:柱形图 R语言基础教程5:图形页面排版 R语言基础教程6:程序设计基础 R语言基础教程7 ...

  8. R语言swirl教程(R Programming)13——Simulation

    R语言swirl教程(R Programming)13--Simulation | One of the great advantages of using a statistical program ...

  9. R语言swirl教程(R Programming)10——lapply and sapply

    R语言swirl教程(R Programming)10--lapply and sapply | In this lesson, you'll learn how to use lapply() an ...

最新文章

  1. 推荐7个看似简约,实则惊艳的实用软件,建议收藏!
  2. stm32使用 ST-LINK Utility量产,程序读保护、写保护
  3. MySql入门笔记二~悲催的用户
  4. LeetCode—221. 最大正方形
  5. PyQt5学习笔记03----Qt Designer生成源码
  6. Vim移动光标快捷键汇总
  7. java异步处理_Java编程开发好入门吗 消息队列的用途有哪些
  8. C++初学者该如何写程序?
  9. 关于STM8L系列编程
  10. 如何优雅地排版微信公众号内的代码块?我推荐几款常用的发帖工具!
  11. U盘只读文件系统修复详解
  12. java 设置表头字体_Java将数据按列写入Excel并设置格式(字体、背景色、自动列宽、对齐方式等)...
  13. 雷锋实验室: 伦敦奥运会手机应用盘点
  14. 【4500字归纳总结】一名软件测试工程师需要掌握的技能大全
  15. 坏掉充电宝内部电池怎么充电?教你用它的电池做一个新的充电宝
  16. 文件下载(导出)功能,fileDownload。
  17. NVIDIA Jetson之UART功能开发
  18. JDBC如何防止SQL注入
  19. django html菜单,使用Django模板的导航菜单
  20. wps交叉表_WPS交叉引用的使用方法

热门文章

  1. “应用程序配置不正确”解决方案
  2. 什么是SCRM?和CRM有什么区别
  3. 全球及中国金融科技即服务平台行业动态发展与运营规模研究报告2022版
  4. 有状态,无状态对象是什么概念
  5. 你不知道的声纹识别,尽在阿里聚安全攻防挑战赛!
  6. 12306登录验证码识别
  7. 使用vite创建vue项目
  8. 惠普战66怎么用u盘进入系统_惠普战66Pro G1 u盘启动bios如何设置?
  9. 碳基生命与硅基生命之间的一场思维碰撞
  10. 生命科学50讲 | 生命·智能 | 笔记和点评