一、准备工作

(1)下载包:install.packages(tidyverse)--注意选择国内源

(2)载入包:library(tidyverse)

(3)了解一下本次实验所使用的几个数据包

可以使用str()函数查看data_frame的相关结构

1、diamond钻石包

carat numeric类型:数值
cut factor类型(因子类型):fair、good等5个
color factor类型(因子类型):D、E、F等7个
clarity factor类型(因子类型):I1、SI2等8个
depth numeric类型:数值
table numeric类型:数值
price int类型:整数

2、mtcars包

mpg numeric类型
cyl numeric类型,只有4、6、8三种
disp numeric类型
hp numeric类型
drat numeric类型
wt numeric类型
qsec numeric类型
vs numeric类型,只有0和1
am numeric类型,只有0和1
gear numeric类型,只有4,3,5
carb numeric类型,只有1,2,3,4,6,8

看取值范围可以使用unique(mtcars$列名)

3、mpg包

二、基本公式

ggplot+geom_*()+分面函数+修饰函数

ggplot():将所需要的数据放在里面

geom_*():选择不同的公式,画出不同类型的图

三、ggplot()讲解

1、用来指定所需要使用的数据,尽量将所有的数据信息放在ggplot()函数里面

2、函数构造ggplot(data=mydata,mapping=aes(x=..,y=..,.....))

(1)两个基本参数,data用来表明你所用的data_frame的名称;mapping里面的aes里面表示坐标轴是什么,一般要按照后面的geom_*来分情况讨论

四、geom_*()分类讲解

4.1 geom_point()

1、用于绘制点图

2、参数包括:点形状shape、点颜色color、尺寸size

3、需要指定横坐标和纵坐标

例:

ggplot(data=mtcars,mapping=aes(x=gear,y=wt))+geom_point(color="blue",size=2,fill="blue",alpha=0.6)

注意:当绘制点图的时候,geom_point()会将坐标值进行舍入取整,会出现多个点彼此重叠的情况,导致在图上看到的点少于实际上的点,称为过绘制。解决方法,加一个参数position="jitter",在绘制大量点的点图时可以使用。

下面两图是没加position="jitter"参数和加了参数的不同,我们可以看到没加的更加规整一些

 4.2 geom_line

1、用于绘制线图

2、参数包括color(颜色)、linetype(类型)、size(粗细)等

3、需要指定横坐标和纵坐标

ggplot(data=mpg,mapping=aes(x=cty,y=hwy))+geom_point(color="blue",size=2,fill="blue",alpha=0.6,position="jitter")+geom_line(color="red",size=0.5)

 4.3 geom_bar()

1、用于绘制条形图

2、只需要指定横轴坐标,必须是一个离散值(因子类型或者字符串类型)

3、纵坐标的值会按照横坐标来计数

4、常用的参数包括:width(条形图粗细)、color(边框颜色)、fill(填充颜色)、alpha(透明度)、weight、stat(后面说)

5、+coord_flip可以将竖着换成横的

ggplot(data=diamonds,mapping=aes(x=cut))+geom_bar(fill="blue",alpha=0.5,color="white")

如果是numeric类型,虽然是离散的,但是横坐标不会删除掉中间的数字

可以先将其转换为因子类型后再写,

6、参数weight,上面的geom_bar函数的纵坐标一开始只能是count计数,但是如果我们使用了weight参数,就可以按照x分成几个条状后,计算weight里面的数值的和

ggplot(data=diamonds,mapping=aes(x=cut,weight=carat))+geom_bar(fill="blue",alpha=0.5,color="red")

计算了不同cut类型下carat的总和

7、改变横轴上面条形的顺序

myfactor<-reorder(x,X,FUN=。。)其中,x参数是一个离散型的向量,X是与x等长的一个变量,按照fun(X)对x进行排序即可

8、stat参数

加上stat=“identity”的参数,类似于weight的功能

ggplot(data=mtcars,mapping=aes(x=factor(cyl),y=wt))+geom_bar(color="red",fill="blue",alpha=0.5,stat="identity")

9、在geom_bar()当中,对每个条形会计算出两个值count和prop,这两个中间值也是可以拿来用的,可以当作横坐标或者纵坐标。使用方式

·在这两个值前面加上两个点..count..和..prop..

·在这两个值用的时候用stat()包起来

如下:

ggplot(data=diamonds,mapping=aes(x=cut,y=stat(count/max(count))))+geom_bar(color="red",fill="blue",alpha=0.3)

 4.4 geom_histogram()

1、只需要指定横轴变量,纵轴会根据横轴变量的值统计出来

2、可以使用离散型变量或者连续型变量作为横坐标

3、常用参数有:color、fill、alpha、weight、stat、bins等

4、histogram会自动将横轴分成多个小区间,统计每个小区间的数值

5、如果要将区间划分地更细,可以使用参数bins,或者binwidth,但是它们只对连续型变量有效

ggplot(data=diamonds,mapping=aes(x=carat))+geom_histogram(width=0.5,color="blue",fill="purple",alpha=0.5,bins=50)

6、同样的,histogram也会有四个中间值可以用,count、density、ncount(相对比例)、ndensity(相对密度),用法同上面的count和prop是一样的

7、注意stat="count"这个参数,什么时候是必须加的,当且仅当你的x坐标是一个factor、character等离散类型的时候,就必须要加这个参数(包括使用weight),反推连续型、num就不需要加这个参数。但是如果使用y坐标的话,不管x坐标是什么,都应该加上的是stat=“identity”

梳理归纳一下,这个stat="identity"和这个stat="count"到底什么时候加,非常迷糊

stat="identity"要加 有y的时候,且y值不是..count../..count../..density../..ndensity..
stat="count"要加 没有y的时候,且x是离散型,即为factor或character;还有一种是有weight的,离散型要加
stat="identity"不加 有y的时候,且y值是..count..等等,这时候什么都不要加
stat="count"不加 没有y的时候,且x不是离散型,这时候什么都不要加

总的来说,首先先分是不是离散型,如果不是离散型就不需要考虑stat=“count”这种情况,再看y还是weight,weight不管,只看y,有y就是stat="identity"。

4.5 geom_freqpoly()----待确认

1、geom_freqpoly和geom_histogram类似,不过前面的只画折线

plus:但是我发现一个点,你没办法使用离散值作为x坐标,你只能用非离散值做x坐标,而且不是非要有stat=“count”

plus:还有一个点,geom_freqpoly不能用在有y值和weight值的里面

4.6 geom_boxplot

1、箱型图,横坐标只能是离散型。

2、同时需要横坐标和纵坐标

3、如果要使用连续变量作为横坐标,需要手动进行分组

使用group=cut_width(变量名称,距离)

ggplot(data=diamonds,mapping=aes(x=carat,y=depth,group=cut_width(carat,0.1)))+geom_boxplot(color="blue")

怎么用的呢,就是首先写x横坐标,再写y纵坐标,然后再用group参数,把x横坐标cut_width()进行切分,按照一定的标度

4.7 geom_smooth()

1、这个函数是用来拟合的,来添加一系列的平滑曲线和置信区间

2、参数如下

method 使用的平滑函数,lm(线型)、glm(广义线性)、smooth、rlm(健壮线型)
formula 平滑函数中使用的公式,例如y~x,y~log(x),y~poly(x,n)【表示的是x的n次多项式】
se 是否绘制置信区间
level 置信区间的水平,默认为95%
fullrange 拟定是否应当涵盖全图。默认值为FALSE
linetype 线型
size 线的粗细
color 线的颜色
fill 填充区的颜色
alpha 色彩饱和度(alpha=0表示完全透明, alpha=1表示完全不透明)

绘制:如果你不先使用geom_point()的话,最后的结果里面只有一个区间和一条线

4.8 geom_density()

1、用来绘制密度函数,可以叠加在密度直方图上面使用

2、只需要一个x坐标

4.9 geom_count()

1、绘制两个离散变量的各种组合出现的次数,用点的大小表示

ggplot(data=diamonds,mapping=aes(x=color,y=cut))+geom_count(color="blue",alpha=0.3)

4.9 geom_tile() 

1、功能与geom_count()类似,不过使用色块来表示

这个地方没搞懂--学一下

R语言从入门到入土--一文带你解锁ggplot2绘图大法相关推荐

  1. 决战Go语言从入门到入土v0.1

    下载地址:https://gitcode.net/as604049322/blog_pdf 安装与运行环境 Go 语言环境安装 Go语言支持Linux.Mac和Windows,本人接下来的学习全部基于 ...

  2. 视频教程-R语言从入门到精通系列之新手上路视频课程-其他

    R语言从入门到精通系列之新手上路视频课程 WOT峰会讲师,中国R语言大会讲师,数据分析师,8年以上数据挖掘建模工作实战经验,部分研究成果获国家专利,攥写<R语言与数据挖掘>.<数据先 ...

  3. R循环有两个_量化金融R语言【入门五味】五味:函数

    本章是此系列的最后一讲,也是衔接从入门到中阶的重要一节.众所周知,函数,不管是数学上定义的那种还是编程里叙述的那样,都意在表达逻辑.几乎写每个程序都或多或少地内嵌着函数在里面,即函数是程序的灵魂,没有 ...

  4. R语言基础入门(全)

    R 是门语言,也是个环境.个人认为R有点像matlab. R自带多种统计学及数字分析功能.R的功能也可以通过安装包(Packages,用户撰写的功能)增强,个人感觉这个就是插件.因为S的血缘,R比其他 ...

  5. R语言使用cowplot包的plot_grid函数将两个ggplot2可视化结果并排组合起来并添加图像标签A、B、设置组合图像使用共享的图例(shared legend in cowplot)

    R语言使用cowplot包的plot_grid函数将两个ggplot2可视化结果并排组合起来并添加图像标签A.B.设置组合图像使用共享的图例(combine two plots side by sid ...

  6. R语言在气象、水文中数据处理及结果分析、绘图

    R语言是一门由统计学家开发的用于统计计算和作图的语言(a Statistic Language developed for Statistic by Statistician),由S语言发展而来,以统 ...

  7. R语言统计入门课程推荐——生物科学中的数据分析Data Analysis for the Life Sciences

    Data Analysis for the Life Sciences是哈佛大学PH525x系列课程--生物医学中的数据分析(PH525x series - Biomedical Data Scien ...

  8. R 语言 相关入门资料

    <R语言基础语法入门>: http://www.xueqing.tv/upload/april-training/day1/index.html#1 转载于:https://www.cnb ...

  9. [R语言] WGCNA入门教程

    文章目录 wgcna入门-雌性小鼠肝脏表达数据的网络分析:寻找与体重有关的模块 1 数据输入和清洗 1.1 加载基因表达数据 1.2 数据清洗 1.3 加载临床特征数据 2 建设表达网络与模块检测 2 ...

最新文章

  1. Android NDK学习笔记4:JNI访问Java构造函数
  2. 输入任意长度的字符串,反向输出(递归)
  3. 仓库中应用的计算机设备有哪些,智能仓储设备系统中有哪些常见的应用工具
  4. scn exercise view.setModel will trigger binding creation in Fiori
  5. jar各个版本号的意义
  6. 在每趟长途的HTML5挑运之后
  7. 微课|中学生可以这样学Python(5.6.1节):列表推导式1
  8. 谁不想写出干净的代码?7 个技巧,让你的同事爱上你的代码
  9. 【PHP】安装wampserver3.1.19后apache无法启动问题
  10. java 获取域名_Java获取域名,Java从URL地址中获取域名,Java从Request 获取域名
  11. 史上最全的前端资源汇总(上)
  12. 长城服务器装双系统,苹果双系统怎么装win7系统,教你苹果windows7双系统教程
  13. 数据分析面试——如何分析产品日活下降原因
  14. BP神经网络原理及Python实现
  15. Vue2 轮播图组件 原生slide组件
  16. C语言人机大战之决战三子棋之巅
  17. 基于PHP+MySQL的健身俱乐部网站的设计与实现
  18. 如何画关系代数的连接图?(数据库关系代数中笛卡儿积、θ连接、等值连接、自然连接、外连接)
  19. 51PCB科普POFV工艺之生产优势
  20. AVL(Athena Vortex Lattice)如何编写与应用(一)

热门文章

  1. Pandas数据预处理的常用函数
  2. 喷墨打印机注墨帮助您省钱
  3. 一个比较漂亮的计算器
  4. UI自动化测试python明明selenium元素定位了却不能点击执行
  5. 浙江大学2021-22学年数理方法甲(II)回忆卷
  6. 电话诈骗之思考|安全是什么?
  7. oracle-账户解锁
  8. 郑州职业技术学院计算机宿舍,郑州职业技术学院宿舍条件及图片
  9. Part I 空气曲棍球 Chapter9(Adding Touch Feedback)
  10. 基于word2vec的中文词向量训练