R绘图笔记 | 一般的散点图绘制
可先阅读文章:R绘图笔记 | R语言绘图系统与常见绘图函数及参数
1.利用plot()绘制散点图
R语言中plot()函数的基本格式如下:
plot(x,y,...)
plot函数中,x和y分别表示所绘图形的横坐标和纵坐标;函数中的...为附加的参数。plot函数默认的使用格式如下:
plot(x, y = NULL, type = "p", xlim = NULL, ylim = NULL, log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL, ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, asp = NA, ...)
主要参数的含义如下:
(1)type为一个字符的字符串,用于给定绘图的类型,可选的值如下:
"p":绘点(默认值);
"l":绘制线;
"b":同时绘制点和线;
"c":仅绘制参数"b"所示的线;
"o":同时绘制点和线,且线穿过点;
"h":绘制出点到横坐标轴的垂直线;
"s":绘制出阶梯图(先横后纵);
"S":绘制出阶梯图(先纵后竖);
"n":作空图。
(2)main参数 字符串,给出图形的标题;
(3)sub参数 字符串,给出图形的子标题;
(4)xlab 和 ylab参数 字符串,用于给出x轴和y轴的标签。
(5)xlim 和 ylim参数 都是二维向量,分别表示x轴和y轴的取值范围。
(6)pch参数。
绘制第一个散点图
####第一个图
x <- runif(50,0,2)
y <- runif(50,0,2)
plot(x, y, main="我的第一个散点图", sub="subtitle", xlab="横坐标", ylab="纵坐标", pch=16)
添加文本和线
text(0.6,0.6,"(0.6,0.6)")
abline(h=.6,v=.6, col='red')
第二个散点图
####第二个图
x <- runif(50,0,2)
y <- runif(50,0,2)plot(x, y, type="n", xlab="", ylab="", axes=F)
points(x,y) #添加坐标点
axis(1) #添加横轴
axis(at=seq(0,2,0.5), side=2) #添加纵轴
box() #补齐散点图的边框
title(main="散点图", sub="subtitle", xlab="x轴", ylab="y轴")
abline(h=0.6,v=0.6,col="red")
2.利用ggpolt2绘图
data(trees) # 加载数据集
head(trees) # 预览数据集
绘图
ggplot(trees, aes(x=Girth,y=Height)) +geom_point()
ggplot(trees, aes(x=Girth,y=Height)) +geom_point(alpha=0.5)
ggplot(trees, aes(x=Girth,y=Height)) +stat_bin2d()
ggplot(trees, aes(x=Girth,y=Height)) +stat_bin2d(bins=50) +scale_fill_gradient(low="lightblue", high="red" ,limits=c(0,5))
高级绘图
ggplot(data = trees, aes(Girth,Volume)) +geom_point(fill="black",colour="black",size=3,shape=21) +geom_smooth(method = 'loess',span=0.4,se=TRUE,colour="#00A5FF",fill="#00A5FF",alpha=0.2)+ #(f)scale_y_continuous(breaks = seq(0, 125, 25))+theme(text=element_text(size=15,color="black"),plot.title=element_text(size=15,family="myfont",hjust=.5,color="black"),legend.position="none")
geom_smooth()函数提供了平滑算法,基本能够满足平时实验数据处理的要求。
添加数据拟合线性模型绘图
fit <- lm(Volume ~ Girth, data = trees) #线性拟合
trees$predicted <- predict(fit) # 保存预测值
trees$residuals <- residuals(fit) # 保存残差(有正有负)
trees$Abs_Residuals<-abs(trees$residuals) #保存残差的绝对值ggplot(trees, aes(x = Girth, y = Volume)) +geom_point(aes(fill =Abs_Residuals, size = Abs_Residuals),shape=21,colour="black") + # size also mapped#使用实际的值绘制气泡图,并将气泡的颜色和面积映射到残差的绝对值scale_fill_continuous(low = "black", high = "blue") + #填充颜色映射到蓝色单色渐变系geom_smooth(method = "lm", se = FALSE, color = "lightgrey") +#添加灰色的线性拟合模型geom_point(aes(y = predicted), shape = 1) + #添加空心圆圈的预测值geom_segment(aes(xend = Girth, yend = predicted), alpha = .2) + #添加实际值与预测值之间的连线guides(fill = guide_legend((title="Rresidual")),size = guide_legend((title="Rresidual")))+ylim(c(0,80))+xlab("Girth")+ylab("Volume")+theme(text=element_text(size=15,face="plain",color="black"),axis.title=element_text(size=10,face="plain",color="black"),axis.text = element_text(size=10,face="plain",color="black"),legend.position = "right",legend.title = element_text(size=13,face="plain",color="black"),legend.text = element_text(size=10,face="plain",color="black"),legend.background = element_rect(fill=alpha("white",0)))
3.其他散点图函数
除了上面的包和函数可以绘制散点图外,还有一些包也可以绘制复杂性的散点图。比如说car包中的scatterplot()函数和lattice包的xyplot()函数。car包中的scatterplot()函数增强了散点图的许多功能,它可以很方便地绘制散点图,并能添加拟合曲线、边界箱线图和置信椭圆,还可以按子集绘图和交互式地识别点。
# 函数1:
scatterplot(formula, data, subset, xlab, ylab, id=FALSE,legend=TRUE, ...)
# 函数2:
scatterplot(x, y, boxplots=if (by.groups) "" else "xy",regLine=TRUE, legend=TRUE, id=FALSE, ellipse=FALSE, grid=TRUE,smooth=TRUE,groups, by.groups=!missing(groups),xlab=deparse(substitute(x)), ylab=deparse(substitute(y)),log="", jitter=list(), cex=par("cex"),col=carPalette()[-1], pch=1:n.groups,reset.par=TRUE, ...)
重要参数:
formula # 模型公式;类似y~x,如果按组绘制,则类似y~x|z,其中z为分组变量;
data # 为模型公式中变量来源的数据集;
subset # 指定筛选数据子集;
x, y # 分别表示水平(x轴)和垂直(y轴)坐标的数字向量;
boxplots # 如为x,则在下方绘制水平x轴的边界箱线图;如为y,则在左边绘制垂直y轴的边界箱线图;
# 如为xy,则在水平和垂直轴上都绘制边界箱线图;设置""或FALSE则不绘制边界箱线图;
regLine # 默认添加拟合回归线;如为FALSE,则不添加;
# 指定lm()函数拟合回归线,默认参数为regLine=list(method=lm, lty=1, lwd=2, col=col)
legend # 逻辑词,当按组绘制散点图且为TRUE时图上显示图例;为FALSE则不绘制图例;
grid # 逻辑词,为TRUE则绘制浅灰色背景网格;
groups # 分组变量或因子;使用不同的颜色、绘图符号等来绘制分组图形;
by.groups # 为TRUE,则按分组拟合回归线;
xlab、ylab # x轴和y轴标签;
log # 绘制对数坐标轴;
jitter # 包含x、y或两者都有的列表;指定散点图中点的水平和垂直坐标的抖动因子;
cex # 设置绘图字符的大小,默认为1;
# 其他参数为cex.axis、cex.lab、cex.main和cex.sub等;
col # 未分组时,直接指定绘制颜色;分组时,设置参数长度应等于组数的颜色向量;
pch # 点的绘图符号;分组时默认按顺序使用字符;
library(car)
scatterplot(Volume ~ Girth, data = trees, xlab="Girth", ylab="Volume",smooth=FALSE)
下面是帮助文档的案例。
scatterplot(prestige ~ income, data=Prestige, ellipse=TRUE)
scatterplot(prestige ~ income, data=Prestige, smooth=list(smoother=quantregLine))
# use quantile regression for median and quartile fits
scatterplot(prestige ~ income | type, data=Prestige,smooth=list(smoother=quantregLine, var=TRUE, span=1, lwd=4, lwd.var=2))
scatterplot(prestige ~ income | type, data=Prestige, legend=list(coords="topleft"))
scatterplot(vocabulary ~ education, jitter=list(x=1, y=1),data=Vocab, smooth=FALSE, lwd=3)
scatterplot(infantMortality ~ ppgdp, log="xy", data=UN, id=list(n=5))
scatterplot(income ~ type, data=Prestige)
另外,还有ggpubr包中的ggscatter()函数也可以绘制散点图。
library(ggpubr)
data(mtcars)
dat <- mtcars
dat$cyl <- as.factor(dat$cyl)
head(dat[, c("wt", "mpg", "cyl")], 3)
ggscatter(dat, x = "wt", y = "mpg",color = "cyl", shape = "cyl",palette = c("#00AFBB", "#E7B800", "#FC4E07"),ellipse = TRUE, mean.point = TRUE,star.plot = TRUE)
## 部分参数解释
data, x, y # data指数据框,x、y为数据框中用来绘制图形的变量
combine # 逻辑词,默认FALSE,仅当y是包含多个变量的向量时使用;如为TRUE,则创建组合面板图
merge # 逻辑词或字符;默认FALSE,仅当y是包含多个变量的向量时使用;如为TRUE,则在同一绘图区域合并多个y变量;
# 字符为"asis"或"flip",如为"flip",则y变量翻转为x轴刻度,x变量翻转为分组变量
color、fill # 设置点的颜色
palette # 设置线图颜色的调色板;可为灰色调色板"grey";自定义调色板c("blue","red")
# ggsci包调色板:"npg","aaas","lancet","jco","ucscgb","uchicago","simpsons"和"rickandmorty"。
shape # 点的形状
size # 数值,设置点和轮廓的大小
point # 逻辑词,为TRUE,则在图上显示点
rug # 逻辑词,为TRUE,则显示边缘地毯
title # 图形标题
xlab、ylab # 指定x轴、y轴的标签;当xlab = FALSE时隐藏标签,y轴同
facet.by # 长度为1-2的字符向量,指定绘制分面的分组向量,分组向量应在数据框中
panel.labs # 修改面板标签的字符向量的列表;用法:
# 一个分组向量:panel.labs = list(sex = c("Male", "Female"))
# 两个分组向量:panel.labs = list(sex = c("Male", "Female"),rx = c("Obs","Lev","Lev2")).
short.panel.labs # 逻辑词,默认为TRUE,省略变量名称为面板创建简短标签
add # 添加另一个绘图元素的字符向量;
# 如"none", "dotplot", "jitter", "boxplot", "point",
# "mean", "mean_se", "mean_sd", "mean_ci", "mean_range",
# "median", "median_iqr", "median_hilow", "median_q1q3",
# "median_mad", "median_range"
add.params # 参数add的参数(color, shape, size, fill, linetype),
# 用法add.params = list(color = "red").
conf.int # 逻辑词,为TRUE,则增加置信区间
conf.int.level # 设置置信区间的置信水平,默认95%
fullrange # 仅在add!="none"时使用,拟合是跨越图的整个范围还是只跨越数据?
ellipse # 逻辑词,为TRUE,则在点周围绘制椭圆
ellipse.level # 点周围椭圆的大小,默认0.95
ellipse.type # 使用字符来指定框的类型,允许值有"convex", "confidence"、"t"、"norm"、"euclid"等
ellipse.alpha # 椭圆的透明度,用于指定填充颜色的透明度,无填充颜色,设置为0。
ellipse.border.remove # 逻辑词,为TRUE,则删除椭圆边框线
mean.point # 逻辑词,为TRUE,则将分组平均点添加到绘图中
mean.point.size # 指定平均点大小的数值
star.plot # 逻辑词,为TRUE,则生成星图
star.plot.lty、star.plot.lwd # 星图的线型和线宽
label # 包含点标签的列的名称,也可以是长度=nrow(data)的向量
font.label # 包含下列元素的列表:大小、类型、颜色等;用法:
# font.label = list(size = 14, face = "bold", color ="red")
font.family # 指定标签的字体格式
label.select # 字符向量,指定要显示的一些标签;
repel # 逻辑词,是否使用ggrepel避免过度绘制文本标签。
label.rectangle # 逻辑词,如为TRUE,则在文本下方添加矩形便于阅读
parse # 为TRUE,标签将被解析为表达式
cor.coef # 逻辑词,为TRUE,相关系数的p值添加到图上
cor.coeff.args # 一系列参数传递给stat_cor函数,用来自定义相关系数的显示,用法:
# cor.coeff.args = list(method = "pearson", label.x.npc = "right", label.y.npc = "top").
cor.method # 计算相关系数的方法,可用值:"pearson", "kendall"或"spearman".
cor.coef.coord # 长度为2的数字向量,指定相关系数的x、y坐标,默认值为NULL
cor.coef.size # 相关系数文字字体的大小
ggp # 不为NULL,则将点添加到现有绘图中
show.legend.text # 逻辑词,图例中是否包含文字;
ggtheme # ggplot2主题名称,默认为theme_pubr();
# 可用值包括theme_gray(),theme_bw(),theme_minimal(),theme_classic(),theme_void()...
参考资料:
1.R语言数据可视化之美,张杰/著
2.scatterplot()函数帮助文件
3.ggscatter()函数帮助文件
R绘图笔记 | 一般的散点图绘制相关推荐
- R绘图笔记 | 火山图的绘制
参考前文:R绘图笔记 | R语言绘图系统与常见绘图函数及参数 关于绘图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R绘 ...
- R绘图笔记 | 小提琴图与漂亮的云雨图绘制
参考前文:R绘图笔记 | R语言绘图系统与常见绘图函数及参数 关于绘图图,前面介绍了一些: R绘图笔记 | 一般的散点图绘制 R绘图笔记 | 柱状图绘制 R绘图笔记 | 直方图和核密度估计图的绘制 R ...
- R绘图 第十篇:绘制散点图(高级)
散点图用于描述两个连续性变量间的关系,三个变量之间的关系可以通过3D图形或气泡来展示,多个变量之间的两两关系可以通过散点图矩阵来展示. 一,添加了最佳拟合曲线的散点图 使用基础函数plot(x,y)来 ...
- R绘图 第八篇:绘制饼图(ggplot2)
geom_bar()函数不仅可以绘制条形图,还能绘制饼图,跟绘制条形图的区别是坐标系不同,绘制饼图使用的坐标系polar,并且设置theta="y": coord_polar(th ...
- R语言可视化学习笔记之ggridges包绘制山峦图
作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源. 严涛老师的绘图教程还有: gganimate |诺奖文章里面的动图绘制教程来了!! ggplot2学习笔记之 ...
- R绘图 | 描述性统计常用图(散点图+柱状图+饼图)
descriptive 整个新系列.目前的几个系列, #R实战 以生信分析为主, #跟着CNS学作图 以复现顶刊Figure为主,而本系列 #R绘图 则是学习不在文章中但同样很好看的图,致力于给同学 ...
- R绘图 vs Python绘图(散点图、折线图、直方图、条形图、箱线图、饼图、热力图、蜘蛛图)
写在前面:为啥不用excel绘制这些图,用PoweBI,帆软BI等可视化软件来绘图,不是更方便吗?的确,这些工具都很方便,但同时,它们显得很呆,不够灵活,更为致命的是,它们绘制出的图形,分辨率不够,用 ...
- Matlab绘图(三)散点图—四维数据、五维数据、六维数据、七维数据散点图可视化绘制
Matlab绘图(三)散点图-四维数据.五维数据.六维数据.七维数据可视化分析 一.前言 二.散点图特征分析 (1)原理分析: (2)方案分析: 四维数据进行可视化方案 五维数据进行可视化方案 六维数 ...
- R语言ggplot2可视化在散点图中的每个点上绘制两个错误条:常见的是垂直错误条,它对应于Y值点上的错误(error bar),添加与X轴(水平)相关的错误条(error bar)
R语言ggplot2可视化在散点图中的每个点上绘制两个错误条:常见的是垂直错误条,它对应于Y值点上的错误(error bar),添加与X轴(水平)相关的错误条(error bar) 目录
最新文章
- 尺度不变特征变换匹配算法详解 Scale Invariant Feature Transform(SIFT)
- 数塔(杭电2084)
- AngularJS中ng-repeat对象的问题
- 简化工作流程,10款必备的HTML5开发工具
- 31.return和call的区别
- C++ 复制字符串/字符数组
- [转]小白都能看懂的softmax详解
- mysql中的函数编程_MySQL
- linux查看etl进程,常见ETL工具
- 通知中心 NSNotificationCenter 的简单使用方法
- mysql拒绝远程连接_解决Mysql数据库拒绝远程连接和忘记密码的问题
- Abseil之Copies, Abbrv
- 伟库网与英特尔联手打造“用友伟库云”
- python模板匹配_python实现模板匹配
- Python定时任务框架APScheduler详解
- 【毕设选题】基于C51单片机的毕业设计题目项目汇总 - 500例
- 禁忌搜索算法求解 TSP 问题的代码示例
- python round()函数保留小数位数的详细用法及round函数的坑
- Linux学习笔记(六)——文件打包与解压缩
- 这款Python视频剪辑神器,牛逼!
热门文章
- Java后台数据自动备份的实现
- mysql 查询重复记录 取第一条_取出重复记录的第一条
- matlab画xyz的等高线图,matlab如何画等高线图
- c语言递归求差分方程,关于差分方程
- 基于Python热门旅游景点数据分析系统设计与实现
- 2022-2028全球与中国溴化锂市场现状及未来发展趋势
- WINDOWS下PCI接口卡WDM驱动程序的DMA编程技术1
- [EDI Share] Walmart/沃尔玛EDI解决方案之850采购订单业务
- oracle在w10中无法安装软件下载,win10系统下载软件被阻止安装该怎么办?
- ssm 框架的 搭建