R语言实战-第十一章中级绘图(与ggplot2包进行对比)
#第11章中级绘图(与ggplot2包进行对比)
#散点图
#图1 plot()函数
attach(mtcars)
plot(wt,mpg,
main="基本散点图",
xlab="车重",
ylab="每加仑英里数",pch=15)
abline(lm(mpg~wt),col="red",lwd=2,lty=1)
lines(lowess(wt,mpg),col="blue",lwd=2,lty=2)
#专门针对R,lowess和loess差异很小。这里有一个非常详细的解释:
#https : //support.bioconductor.org/p/2323/#图2 car::scatterplot
library(car)
car::scatterplot(mpg~wt|cyl,data=mtcars,span=0.75,
main="增强散点图",
xlab="车重",
ylab="每加仑英里数",
legend.plot=TRUE,
boxplots="xy")
#ggplot2绘制图1
library(ggplot2)
ggplot(aes(x=wt,y=mpg),data = mtcars)+geom_point(shape=16)+
geom_smooth(method="lm",se=FALSE,col="red",linewidth=1,lty=1)+
geom_smooth(method="loess",se=FALSE,col="blue",linewidth=1,lty=2)+
xlab("车重")+ylab("每加仑英里数")#ggplot2绘制图2
mtcars$cyl <- as.factor(mtcars$cyl)#转化成因子,否则会成为连续性变量,无法分类别绘制
ggplot(aes(x=wt,y=mpg,col=cyl,shape=cyl),data = mtcars)+geom_point()+
geom_smooth(method="lm",se=FALSE,lty=1)+
geom_smooth(method="loess",se=FALSE,lty=2)+
xlab("车重")+ylab("每加仑英里数")#散点矩阵图
#图3 pairs()函数绘制
pairs(~mpg+disp+drat+wt,data = mtcars,
main="基本散点图矩阵")#图4 car::scatterplotMatrix()函数绘制
car::scatterplotMatrix(~mpg+disp+drat+wt,data = mtcars,
spread=FALSE,smooth.args=list(lty=2),
main="car包创建的散点图矩阵")
detach(mtcars)
#高密度散点图
set.seed(004)
n <- 10000
c1 <- matrix(rnorm(n,mean=0,sd=0.5),ncol=2)
c2 <- matrix(rnorm(n,mean=3,sd=2),ncol=2)
mydata <- rbind(c1,c2)
mydata <- as.data.frame(mydata)
names(mydata) <- c("x","y")
str(mydata)
with(mydata,
plot(x,y,pch=19,
main="10000 个观测点的散点图"))#如何处理数据点重叠导致识别x与y的关系变得异常困难
#方法1 smoothScatter()
with(mydata,smoothScatter(x,y,main="利用光平滑密度估计绘制的散点图",
colramp = colorRampPalette(c("white", "black"))))#方法2 hexbin包中的hexbin函数将二元变量的封箱放到六边形单元格中
library(hexbin)
with(mydata,
{bin <- hexbin(x,y,xbins=50)
plot(bin,main="用六边形封箱图展示的各点上\n覆盖观测点数目的散点图")
})
#ggplot2 扰动点图 箱线图 小提琴图都能解决图形重叠的问题library(ggplot2)
ggplot(aes(x,y),data = mydata)+geom_jitter()# 扰动点图
ggplot(aes(x,y),data = mydata)+geom_boxplot(col="red",fill="gold")# 箱线图
ggplot(aes(x,y),data = mydata)+geom_violin(fill="pink",col="black")# 小提琴图#三维散点图
#scatterplot3d 一次性对三个定量变量的交互关系进行可视化
library(scatterplot3d)
with(mtcars,
scatterplot3d(wt,disp,mpg,
pch = 16,
highlight.3d=TRUE,#颜色
type = "h",#添加连接点与水平面的垂线
col.axis = "blue",#3D图外框颜色
col.grid = "gold",#网格线颜色
main="基本3D scatter图"))#添加回归面
attach(mtcars)
s3d <- scatterplot3d(wt,disp,mpg,
pch = 16,
highlight.3d=TRUE, #颜色
type = "h", #添加连接点与水平面的垂线
main="基本3D scatter图")
fit <- lm(mpg~wt+disp)
s3d$plane3d(fit)# Hemisphere半球图
temp <- seq(-pi, 0, length = 50)
x <- c(rep(1, 50) %*% t(cos(temp)))
y <- c(cos(temp) %*% t(sin(temp)))
z <- c(sin(temp) %*% t(sin(temp)))
scatterplot3d(x, y, z, highlight.3d = TRUE, angle = 120,
col.axis = "blue", col.grid = "lightblue", cex.axis = 1.3,
cex.lab = 1.1, main = "Hemisphere", pch = 20)#旋转三维散点图
#1 使用rgl::plot3d(x,y,z)
library(rgl)
attach(mtcars)
plot3d(wt,disp,mpg,col = "red",size = 5)#2 使用car::scatter3d
attach(mtcars)
car::scatter3d(wt,disp,mpg) #默认添加线性平面#气泡图 先创建一个二维散点图 然后用气泡大小来表示第三个变量的值
attach(mtcars)
symbols(wt,mpg,circles = disp,
inches = 0.2,#设置最大圆圈的尺寸,默认为1
fg="black",bg="lightblue",#圆圈的填充色和边沿色
main = "气泡图")
text(wt,mpg,row.names(mtcars),cex=0.6)#为圆圈添加汽车的名称
detach(mtcars)
#折线图 采用ggplot2绘制
#使用数据集Orange
#三散点图
t1 <- subset(Orange,Tree==1)
str(t1)
p1 <- ggplot(aes(age,circumference),data = t1)+
geom_point(size=2,col="forestgreen")+
xlab("Age(days)")+ylab("circumference(mm)")+
title("Orange Tree 1 Growth")
p2 <- ggplot(aes(age,circumference),data = t1)+
geom_line(linewidth=1,col="forestgreen")+geom_point(size=2.5)+
xlab("Age(days)")+ylab("circumference(mm)")+
title("Orange Tree 1 Growth")
library(cowplot)
plot_grid(p1,p2,ncol=2)#用pplot2展示物种橘树的生长情况
ggplot(Orange,aes(age,circumference,col=Tree))+
geom_line(aes(linetype=Tree))+
geom_point(size=2.5)+
xlab("Age(days)")+ylab("circumference(mm)")+
theme(legend.position = c(0.1,0.7))+
scale_colour_manual(values = c("red","blue","black","grey","gold"))+
ggtitle("Orange Tree 1 Growth")+
theme_bw() #背景透明#有关背景的代码
p <- ggplot(Orange,aes(age,circumference,col=Tree))
p=p+theme_bw()#背景透明
p=p+theme(panel.grid.major = element_blank())#去掉主刻度
p=p+theme(panel.grid.minor = element_blank())#去掉次刻度
p=p+theme(panel.border = element_blank())#去掉外框线
#一次性实现透明 去掉主次刻度和外框线
p=p+theme(panel.background = element_rect(fill = "transparent"))#相关图
options(digits = 2)
str(mtcars)
mtcars$cyl <- as.numeric(mtcars$cyl)
cor(mtcars)
library(corrgram)
#表达式 corrgram(x,order=,panel=,text.panel=,diag.panel=)
corrgram::corrgram(mtcars,
order = TRUE,#order = TRUE矩阵行和列通过主成分分析法进行重排序
lower.panel = panel.shade,
upper.panel = panel.pie,
text.panel = panel.txt,
main = "mtcars各变量相关系数图")
#颜色表示相关性 越深相关性越大
#左下角:蓝色和↗表示两个变量呈正相关 红色和↘表示两个变量呈负相关
#右上角:从12点方向开始 正相关性顺时针 负相关性逆时针
#panel=有不同选择 panel.ellipse panel.pts panel.confcorrgram::corrgram(mtcars,
order = TRUE,#order = TRUE矩阵行和列通过主成分分析法进行重排序
lower.panel = panel.pts,
upper.panel = panel.ellipse,
text.panel = panel.txt,
main = "mtcars各变量相关系数图")#控制颜色
cols <- colorRampPalette(c("gold","red","green","blue"))
corrgram::corrgram(mtcars,col.regions = cols,
order = TRUE,#order = TRUE矩阵行和列通过主成分分析法进行重排序
lower.panel = panel.pie,
upper.panel = NULL,
text.panel = panel.txt,
main = "mtcars各变量相关系数图")
#ggplot2给热图添加显著性标记
library(tidyverse)
library(magrittr)
library(Hmisc)
#定义函数
cors <- function(df) {
m <- Hmisc::rcorr(as.matrix(df))
mdf <- map(m, ~data.frame(.x))
return(mdf)
}df_cor <- function(df){
cors(df) %>%
map(~rownames_to_column(.x, var="ID1")) %>%
map(~pivot_longer(.x, -ID1,"ID2")) %>%
bind_rows(.id = "id") %>%
pivot_wider(names_from = id, values_from = value) %>%
mutate(p_if = ifelse(P <.05, P, NA), # P <0.05 返回P值
r_if = ifelse(P <.05, r, NA), # p <0.05 返回r值
p_signif=symnum(P, corr = FALSE, na = FALSE,
cutpoints = c(0, 0.01, 0.05, 0.1, 1),
symbols = c("**", "*", ".", " "))) # 将P值转化为*
}
#计算相关性
corda <- df_cor(mtcars) %>% select(1,2,3) %>%
pivot_wider(.,names_from = ID2,values_from = r) %>%
column_to_rownames(var="ID1")corda[upper.tri(corda)] <- NA # 取上部分
#导出相关性表格
corda %>% write.table(file="cor.xls",sep="\t",quote = F,col.names = NA)
#导出p_value
P_value <- df_cor(mtcars) %>% select(1,2,P) %>%
pivot_wider(.,names_from = ID2,values_from = P) %>%
column_to_rownames(var="ID1")P_value[upper.tri(P_value)] <- NA
P_value %>% write.table(file="P_value.xls",sep="\t",quote = F,col.names = NA)
#数据整合
p <- corda %>% rownames_to_column(var="ID1") %>%
pivot_longer(-ID1) %>% drop_na() %>%
set_colnames(c("ID1","ID2","Pearson's\nCorrclation")) %>%
left_join(.,df_cor(mtcars) %>% select(1,2,p_signif),by=c("ID1","ID2"))p$ID1 <- factor(p$ID1,levels = unique(p$ID1))
p$ID2 <- factor(p$ID2,levels = unique(p$ID2))
#数据可视化 绘图
p %>% ggplot(aes(ID1,ID2,color=`Pearson's\nCorrclation`,fill=`Pearson's\nCorrclation`)) +
geom_tile(col="grey", fill="white",size=0.2)+
geom_point(aes(size = abs(`Pearson's\nCorrclation`)),shape=21)+
geom_text(aes(label=p_signif),size=5,color="white",hjust=0.5,vjust=0.7)+
labs(x = NULL, y = NULL)+
theme(axis.text.y=element_text(color="black",face="bold",family="Tims"),
panel.grid = element_blank(),
axis.ticks = element_blank(),
panel.background = element_blank(),
axis.text.x=element_text(color="black",face="bold",family="Tims",angle = 90,vjust=0.5,hjust=1),
legend.title = element_text(color="black",family="Tims",face="bold",size=8),
legend.text=element_text(color="black",size=8))+
scale_color_gradientn(colours = RColorBrewer::brewer.pal(11,"RdBu"))+
scale_fill_gradientn(colours = RColorBrewer::brewer.pal(11,"RdBu"))+
scale_x_discrete(expand=c(0,0),position = "bottom") +
scale_y_discrete(expand=c(0,0),position="right")+
scale_size(range=c(1,8), guide=NULL)+
guides(color = guide_colorbar(direction = "vertical",reverse = F,barwidth = unit(.5, "cm"),
barheight = unit(7.2,"cm")))#马赛克图 以Titanic数据集为例
library(vcd)
ftable(Titanic)
vcd::mosaic(~Class+Sex+Age+Survived,data=Titanic,shade=TRUE,legend=TRUE)
#根据模拟模型的皮尔逊残差值对图形上色
#ggplot2给热图添加显著性标记代码来源
#https://mp.weixin.qq.com/s/omJcvlxfiXZzLbqKIp_3yA
R语言实战-第十一章中级绘图(与ggplot2包进行对比)相关推荐
- R语言实战笔记--第九章 方差分析
R语言实战笔记–第九章 方差分析 标签(空格分隔): R语言 方差分析 术语 组间因子,组内因子,水平:组间因子和组同因子的区别是,组间因子对所有测试对象进行分组,而组内因子则把所有测试对象归为同一组 ...
- R语言实战 前三章 统计 数据框 经典画图
目录 导论 案例1 stat 案例2 packages 第一章 R语言介绍 基本的操作命令 保存图片 第二章 创建数据集 2.1. 合并 2.2. 向量 2.2.1. 赋值 2.2.2. 删除 2.2 ...
- R语言实战第一,二章SQL版
星辰大海 这是之前使用R语言完成的一道简单的数据统计题目链接: https://zhuanlan.zhihu.com/p/27092971 完成之后心理还是有点小得意的.但和答案一对比就发现问题了,自 ...
- r 语言 ggplot上添加平均值_R语言中ggplot2包作数据分布情况下的统计图实例学习(一)
1.小提琴图 小提琴图可以可视化一组或几组数字变量的分布. 问题:您想制作一个小提琴图来比较不同组的密度估计.用gcookbook包与ggplot2包分别绘制. 解决问题: 使用geom_violin ...
- R语言实战-第十七章 R in action-chapter17
本章目的:基于一组预测变量预测一个分类结果 (如:根据关键词.图像.来源等判断一份邮件是否是病毒邮件) 本章用到的package: #rpart rpart.plot party 实现决策树模型及其可 ...
- 《时间序列分析及应用.R语言》第十一章阅读笔记
第11章 11.1干预分析 library(TSA) win.graph(width = 4.875,height = 2.5,pointsize = 8) data(airmiles) plot(l ...
- R语言 数据挖掘:R语言实战 第六章 关联分析
关注微信公共号:小程在线 关注CSDN博客:程志伟的博客 举例说明关联规则里面的核心概念--支持度.置信度.提升度 假设有10000个消费者,购买了1000个尿布,2000个啤酒,500个面包,这其中 ...
- R语言实战-读书笔记(第1 章 R语言介绍)
*R语言实战所有学习笔记,如涉及侵权,请联系撤稿.* **标题号与书中标题号对应** R语言实战 第1章 R语言介绍 1.2 R的获取与安装 R可以在CRAN(Comprehe ...
- R语言实战笔记--第十四章 主成分和因子分析
R语言实战笔记–第十四章 主成分和因子分析 标签(空格分隔): R语言 主成分分析 因子分析 原理及区别 主成分分析与因子分析很接近,其目的均是为了降维,以更简洁的数据去解释结果,但这两种方法其实是相 ...
- R语言mad(c(1 2 3 4)),R语言--数据管理-R语言实战笔记-第四五章
第四.第五章都是说的数据管理,合并在一起做个总结,在个人看来,数据管理是一件非常繁琐的事情,但是,每个统计的前提都是一个合适的数据样本,对的,"合适",做到合适可不是一个简单的事情 ...
最新文章
- How to Use tomcat on Linux
- 吴恩达老师深度学习视频课笔记:构建机器学习项目(机器学习策略)(1)
- modbus报文解析实例_万字长文!春招面试总结,鹅厂T3Android高频面试真题+解析...
- java中executeQuery()方法
- .net 简单实现MD5
- 文本编辑器实现复制、剪切、粘贴、撤销、重做操作
- 宜昌宝塔河项目_宜昌城区首个垃圾分类定时定点投放点启用 厨余垃圾破袋投放...
- LeetCode 1219. 黄金矿工(回溯)
- python中if控制语句_Python中流程控制语句之IF语句
- Android TextView文字横向自动滚动(跑马灯)
- 多校#5-1005-Instring-HDU5785-manacher+维护
- 餐饮为什么很难做到薄利多销?
- 在云上搭建大规模实时数据流处理系统
- Linux命令行打开不了发行光盘RHEL_6.3 i386 Disc 1
- 使用PL/SQL Developer 远程连接Oracle数据库出现 “无监听程序“错误 的解决办法
- 《Kotlin从零到精通Android开发》面世啦
- 虚拟机上装oracle,cmd窗口输入法有问题,按了U,I,O,P,J,K,L,M这些键为什么不是UIOPJK
- 大话设计模式系列之面向对象基础(一)
- PyCharm使用技巧:Ctrl + /(多行注释)
- python函数参数用法之——双星号
热门文章
- 瞄准视频版权检测算法,爱奇艺CCF大数据与计算智能大赛开题了
- 基于Java语言完成:使用URL下载指定的文件保存到指定的文件夹中
- 《产品经理必懂的技术那点事儿》读书笔记
- 访学有感------------南京访学一周小记
- 【sql:练习题2】查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩...
- 20190221——周婕纶 Intellijidea Project structureTomcat
- 等保2.0 Linux主机测评
- 2021年全球乳果糖浓溶液收入大约154.7百万美元,预计2028年达到172百万美元
- 软件测试/测试开发丨app自动化测试之Appium WebView 技术原理
- 供应商维护银行帐户的一点心得