## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
##
## 载入程序包:'gridExtra'
##
##
## The following object is masked from 'package:dplyr':
##
## combine
##
##
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
##
##
## 载入程序包:'corrgram'
##
##
## The following object is masked from 'package:GGally':
##
## baseball
##
##
## corrplot 0.95 loaded
##
## 载入需要的程序包:viridisLite
##
## scatterpie v0.2.4 Learn more at https://yulab-smu.top/
mtcars 是R自带的数据集,该数据集摘自
1974年《美国汽车趋势》杂志,包括32款汽车(1973~74款)的油耗、汽车设计和性能等共11个指标。根据该数据集绘制本次练习图形。data = mtcars
datatable(data)
指标解释:cyl、vs、am、gear和carb作为因子变量,其余可看作数值变量。
mpg: 燃油效率(英里/加仑),数值越高越省油。
cyl: 发动机气缸数(4/6/8缸),缸数越多通常动力越强。
disp: 发动机排量(立方英寸),排量越大动力越强,油耗越高。
hp: 发动机马力(马力),数值越高动力越强。
drat: 后轴传动比(比值),影响加速和燃油经济性。
wt: 车重(千磅),重量轻的车通常更省油。
qsec: 1/4英里加速时间(秒),时间越短动力越强。
vs: 发动机类型(0=V型,1=直列),V型多见于高性能车。
am: 变速器类型(0=自动,1=手动),手动挡通常更省油。
gear: 前进挡位数(3/4/5挡),挡位多可能更平顺省油。
carb: 化油器数量(1-8个),数量多可能提升动力。
diamonds是R中ggplot2包内置的经典数据集,记录了约
54,000 颗钻石的物理属性和价格信息。数据集包含 10
个变量,4个分类变量,6个数值变量。bigdata = diamonds
datatable(head(bigdata,12))
利用ggplot(data,aes(x,y))+geom_point()绘制燃油效率(mpg,横轴)和车重(wt,纵轴)两个变量的散点图;
利用geom_rug()为横轴和纵轴绘制地毯图;
利用stat_smooth()为散点图添加拟合直线;
利用geom_point()为散点图添加均值点;
利用ggMarginal(type="densigram")
为散点图添加边际核密度直方图;
利用ggtitle()
将图标题改为散点图+地毯图+线性拟合+边际图 。
df <- data
p1<-ggplot(data=df,aes(x=mpg,y=wt))+
geom_point(shape=21,size=1.5,fill="deepskyblue")+ # 设置点的形状、大小和填充颜色
geom_rug(color="steelblue")+ # 添加地毯图
stat_smooth(method=lm,color="red",fill="blue",size=0.8)+ # 添加线性拟合线、设置线的颜色和置信带的颜色
geom_point(aes(x=mean(mpg),y=mean(wt)),shape=21,fill="yellow",size=4)+ # 绘制均值点
ggtitle("散点图+地毯图+线性拟合+边际图")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
p11<-ggMarginal(p1,type="densigram",color="grey50",fill="lightskyblue",alpha=0.5)
## Warning in geom_point(aes(x = mean(mpg), y = mean(wt)), shape = 21, fill = "yellow", : All aesthetics have length 1, but the data has 32 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.
## `geom_smooth()` using formula = 'y ~ x'
## Warning in geom_point(aes(x = mean(mpg), y = mean(wt)), shape = 21, fill = "yellow", : All aesthetics have length 1, but the data has 32 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.
## `geom_smooth()` using formula = 'y ~ x'
## Warning in geom_point(aes(x = mean(mpg), y = mean(wt)), shape = 21, fill = "yellow", : All aesthetics have length 1, but the data has 32 rows.
## ℹ Please consider using `annotate()` or provide this layer with data containing
## a single row.
## `geom_smooth()` using formula = 'y ~ x'
## Warning: The dot-dot notation (`..density..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(density)` instead.
## ℹ The deprecated feature was likely used in the ggExtra package.
## Please report the issue at <https://github.com/daattali/ggExtra/issues>.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
p11
利用GGally::ggpairs(columns)绘制除cyl、vs、am、gear和carb外6个变量的散点图矩阵;
修改参数upper=list(continuous = "density")
,将上三角图形改为二维核密度等高线图;
利用ggiraphExtra::ggCor()
绘制除cyl、vs、am、gear和carb外6个变量的相关系数矩阵图。
df <- data |> dplyr::select(-c("cyl","vs","am","gear","carb"))
ggpairs(df, # 选择图变量
lower = list(continuous = "points"), # 对角线下方绘制点
upper = list(continuous = "density"))+ # 对角线上方绘制二维核密度图
theme(axis.title=element_text(size=8))+ # 设置坐标轴标签字体大小
theme(axis.text=element_text(size=6)) # 设置坐标轴刻度字体大小
ggCor(df,whaw=1, # 计算Pearson相关系数
digits=4, # 保留4为小数
label=3, # 显示相关系数及其检验的P值
mode=2, # 显示半角矩阵
xangle=0)+ # 设置x轴标签角度
ggtitle("ggCor函数绘制的相关系数矩阵")
利用diamonds数据,绘制carat: 钻石重量和
price: 钻石价格两个变量的散点图;
利用geom_hex(bins=30,size=0.3,color="black"),将散点图转化为六边形分箱散点图;
利用stat_density_2d(geom="raster",aes(fill=..density..),contour=FALSE)
,将散点图转化为二维核密度图;
利用geom_density_2d()
,在散点图上添加核密度等高线;
利用geom_density_2d_filled(alpha=0.8)
,对核密度等高线区域填充颜色。
library(viridis) # 色盲友好的颜色配色包
df <- bigdata
p<-ggplot(df,aes(x=carat,y=price))+ # 绘制散点图
theme_bw()+ # 使用黑白主题
theme(panel.grid=element_blank()) # 移除网格线
p1<-p+geom_hex(bins=20,size=0.3,color="black")+ # 六边形分箱
scale_fill_viridis_c(option="H")+ # 选择配色方案
ggtitle("六边形分箱散点图")
p1
df <- bigdata
p<-ggplot(df,aes(x=carat,y=price))+ # 绘制散点图
theme_bw()+ # 使用黑白主题
theme(panel.grid=element_blank()) # 移除网格线
p2<-p+stat_density_2d(geom="raster",aes(fill=..density..),contour=FALSE)+ # 绘制二维核密度图
scale_fill_viridis_c(option="H")+
ggtitle("二维核密度图")
p2
df <- bigdata
p<-ggplot(df,aes(x=carat,y=price))+ # 绘制散点图
theme_bw()+ # 使用黑白主题
theme(panel.grid=element_blank()) # 移除网格线
p3<-p+geom_point(color="grey20")+ # 绘制散点图
geom_density_2d()+ # 添加等高线
ggtitle("散点图+密度等高线")
p3
df <- bigdata
p<-ggplot(df,aes(x=carat,y=price))+ # 绘制散点图
theme_bw()+ # 使用黑白主题
theme(panel.grid=element_blank()) # 移除网格线
p4<-p+geom_point(color="grey20")+
geom_density_2d_filled(alpha=0.8)+
geom_density_2d(size=0.25,colour="black")+ # 设置等高线宽度和颜色
guides(fill="none")+ # 删除图例
ggtitle("散点图+密度等高线带")
p4
绘制hp发动机马力、mpg燃油效率和wt车重三个变量的 3D 散点图和气泡图。
采用scatterplot3d(x=hp,y=wt,z=mpg)绘制3D散点图,并添加回归平面。
采用ggplot(df,aes(x=hp,y=mpg,color=wt,size=wt))
绘制气泡图
attach(mtcars)
## The following object is masked from package:ggplot2:
##
## mpg
s3d<-scatterplot3d(x=hp,y=wt,z=mpg,
col.axis="blue",col.grid="lightblue",pch=16,highlight.3d=TRUE,
type="h",box=TRUE,cex.lab=0.7,main="添加二元回归面")
fit<-lm(mpg~hp+wt)
s3d$plane3d(fit,col="grey30")
df <- data
ggplot(df,aes(x=hp,y=mpg,color=wt))+
geom_point(aes(size=wt),alpha=0.5)+ # 气泡大小=总股本
scale_size(range=c(1,7))+ # 设置点的大小
theme(panel.grid.minor=element_blank())+ # 移除次网格线
theme(plot.title=element_text(size=12))+ # 设置标题字体大小
theme(legend.text=element_text(size=9,color="blue"))+ # 设置图例字体大小和颜色
scale_color_binned()+ # 设置连续分级色键
guides(size="none")+
annotate("text",x=300,y=30,label="气泡大小 = 车重",size=4)# 添加注释文本
以气缸数(cy1)为因子,绘制车重(wt)和燃油效率(mpg)的分组散点图,添加回归直线;
利用facet_grid(~cy1,scale="free_x")
,按因子变量分面;
利用ggplot(data=df,aes(x=wt,y=mpg,shape=cyl,color=cyl))
,按形状和颜色分组
df <- data |> mutate(cyl=factor(cyl))
ggplot(data=df,aes(x=wt,y=mpg,color=wt))+
geom_point(size=1.5)+ # 设置点的大小
stat_smooth(method="lm",color="red",fill="deepskyblue",size=0.7)+# 添加拟合直线和置信带
theme(legend.position="none", # 移除图例
panel.spacing.x=unit(0.2,"lines"),
panel.spacing.y=unit(0.2,"lines"))+ # 设置子图间距
facet_grid(~cyl,scale="free_x") # 按股票类型分组、按上市板块分面
## `geom_smooth()` using formula = 'y ~ x'
ggplot(data=df,aes(x=wt,y=mpg,shape=cyl,color=cyl))+
geom_point(size=2.5)+ # 设置点的大小
scale_shape_manual(values=c(1,10,16,17))+ # 设置点的形状
scale_color_brewer(palette="Set1")+
theme(legend.position="bottom")+
scale_alpha(guide="none")+
ggtitle("用形状和颜色分组")