写在前面
前面第六章的图形主要是展示单分类变量或连续型变量的分布情况。本章主要研究二元变量或多元变量关系的可视化。更多教程可参考:
图片集锦:
11.1 散点图
1)添加最佳拟合曲线的散点图: 绘制汽车重量与燃油效率之间的关系图(mtcars包):
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
library(ggplot2)
ggplot(mtcars,aes(x=wt,y=mpg))+
geom_point()+
geom_smooth(method = "lm",se=FALSE,color="red")+
geom_smooth(method = "loess",se=FALSE,
color="blue",linetype="dashed")+
labs(title = "Basic Scatter Plot of MPG vs. Weight",
x="Car weight",
y="Miles per gallon")+
theme_bw()
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
注:
1.将 se=FALSE 设置为geom_smooth()函数的参数,可以禁用置信区间的显示,使拟合曲线仅显示其基本形状,而不显示任何不确定性范围(阴影)。
2.LOESS 是一种非参数的回归方法,它通过在数据周围的局部区域内进行加权拟合来估计变量之间的关系。它在拟合过程中考虑了数据的局部特征,因此可以更好地适应非线性关系。
2)添加单独的最佳拟合曲线的散点图: 分别绘制四缸、六缸和八缸汽车的汽车重量与燃油效率之间的关系图(mtcars包):
library(ggplot2)
ggplot(mtcars,aes(x=wt,y=mpg,color=factor(cyl),shape=factor(cyl)))+
geom_point()+
geom_smooth(method = "lm",se=FALSE)+
geom_smooth(method = "loess",se=FALSE,linetype="dashed")+
labs(title = "Basic Scatter Plot of MPG vs. Weight",
subtitle = "By numberof cylinders",
x="Car weight",
y="Miles per gallon")+
theme_bw()
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
散点图可以一次对两个定量变量间的关系进行可视化,但当变量超过2个时,可以用散点图矩阵展示。
11.1.1 散点图矩阵(Scatterplot Matrix)
散点图矩阵在R中被用来同时展示多个变量之间的关系。它是一种多变量可视化方法,通过在一个图形中显示多个散点图,可以帮助我们观察和理解变量之间的相互关系,特别是在探索性数据分析中非常有用。
主要用于:
1.变量关系的可视化
2.变量之间的相关性分析
3.特征选择和变量筛选
之前在8.2.4中展示了car包中的ScatterplotMatrix函数创建方法,这里学习GGally包中的ggpairs()函数创建ggplot2版本的散点图矩阵。
11.1.1.1 基础ggpairs()函数(GGally包中的)
观察mtcars数据集中,汽车里程(mpg)、汽车重量(wt)、排量(disp)和后轴比(drat)间的二元关系:
library(GGally)
## Warning: 程辑包'GGally'是用R版本4.3.2 来建造的
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
ggpairs(mtcars[c("mpg","disp","drat","wt")])
11.1.1.2 添加拟合线、直方图和相关系数的散点图矩阵
library(GGally)
library(ggplot2)
diagplots <- function(data,mapping){
ggplot(data = data,mapping = mapping)+
geom_histogram(fill="lightblue",color="black")
}
lowerplots <- function(data,mapping){
ggplot(data = data,mapping = mapping)+
geom_point(color="darkgrey")+
geom_smooth(method = "lm",color="steelblue",se=FALSE)+
geom_smooth(method = "loess",color="red",se=FALSE,linetype="dashed")
}
upperplots <- function(data,mapping){
ggally_cor(data = data,mapping = mapping,
display_grid = FALSE,size=3,color="black")
}
mytheme <- theme(strip.background = element_blank(),
panel.grid = element_blank(),
panel.background = element_blank(),
panel.border = element_rect(color = "grey20",fill = NA))
ggpairs(mtcars,
columns = c("mpg","disp","drat","wt"),
columnLabels = c("MPG","Displacement","R Axle Ratio","Weight"),
lower = list(continuous=lowerplots),
diag = list(continuous=diagplots),
upper = list(continuous=upperplots))+
mytheme
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `geom_smooth()` using formula = 'y ~ x'
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
知识点补充:
- 1.theme()函数
theme() 函数是 ggplot2 包中用于设置图表外观的函数。它可以用于修改和自定义图表的各个元素,如标题、轴标签、网格线、背景颜色等。以下是 theme() 函数的一些常用参数和用法:
theme(...)
1)通过 theme() 函数可以设置的图表元素包括:
title:图表标题的样式。
plot.title:绘图区域的标题样式。
axis.title:坐标轴标题的样式。
axis.text:坐标轴刻度标签的样式。
axis.line:坐标轴线的样式。
axis.ticks:坐标轴刻度线的样式。
legend.title:图例标题的样式。
legend.text:图例标签的样式。
panel.background:面板背景的样式。
panel.grid:面板网格线的样式。
panel.border:面板边框的样式。
strip.background:面板标题背景的样式。
2)对于每个图表元素,可以使用不同的函数来设置样式,常用的函数包括:
element_text():用于设置文本样式,如字体、大小、颜色等。
element_line():用于设置线条样式,如颜色、线型、粗细等。
element_rect():用于设置矩形样式,如颜色、填充、边框等。
element_blank():用于设置为空,即不显示该元素。
- 2.在 ggpairs() 函数中,lower、diag 和 upper参数
用于指定自定义绘图函数,以控制矩阵散点图矩阵中不同位置的图层绘制方式:
lower: 用于指定下三角部分的图层绘制方式;
diag:用于指定对角线部分的图层绘制方式;
upper:用于指定上三角部分的图层绘制方式。
list(continuous =)指定了一个连续型变量的图层设置.
- 3. ggally_cor()函数 ggally_cor()函数用于创建变量之间相关性矩阵的可视化。
用法:
ggally_cor(data, mapping = NULL, method = "pearson", color = "RdYlBu"
display_grid是一个参数,用于控制是否显示相关性矩阵的网格线。
11.1.2 普通高密度散点图(当观测值较多时容易造成重叠)
set.seed(1234)
n <- 10000
c1 <- matrix(rnorm(n,mean=0,sd=0.5),ncol = 2)#用于生成一个具有 n 行和 2 列的矩阵 c1,其中矩阵的每个元素都是从均值为 0、标准差为 0.5 的正态分布中随机抽取的数字
c2 <- matrix(rnorm(n,mean = 3,sd=2),ncol = 2)
mydata <- rbind(c1,c2)
mydata <- data.frame(mydata)
names(mydata) <- c("x","y")#将mydata数据框原来的列名修改为x和y
library(ggplot2)
ggplot(mydata,aes(x=x,y=y))+
geom_point()
注:
rnorm(n, mean = 0, sd = 0.5) 是一个随机函数 rnorm(),用于生成符合正态分布的随机数。其中,n 是要生成的随机数的个数,mean 是正态分布的均值,sd 是正态分布的标准差。在这里,我们生成了 n 个均值为 0、标准差为 0.5 的正态分布随机数。
从该图看出,当观测值较多时,散点重叠后非常难看,可以用下面方法进行改进。
11.1.2.1 利用核密度估计生成用颜色密度来表示点分布的散点图SmoothScatter()
with(mydata,smoothScatter(x,y, main="Scatter Plot colored by smoothed dendities"))
注:SmoothScatter() 函数是一个用于生成平滑散点图的函数,较高密度区域将以较亮的颜色表示,较低密度区域将以较暗的颜色表示,这有助于观察数据的分布模式和聚集情况。
11.1.2.2 方法2
利用hexbin包中的geom_hex()函数
library(ggplot2)
library(hexbin)
## Warning: 程辑包'hexbin'是用R版本4.3.2 来建造的
ggplot(mydata,aes(x=x,y=y))+
geom_hex(bins=50)+#bins 参数用于指定六边形的数量或密度级别
scale_fill_continuous(trans='reverse')#使颜色较深的表示较大的密度区域
11.1.3 三维散点图
散点图和散点图矩阵都是二元变量关系,如需三元(三维)散点图需要使用scatterplot3d包中的scaterplot3d()函数:
scatterplot3d(x,y,z)
x:水平轴,y:竖直轴,z透视轴。
举例:观察mpg,wt,disp三者的关系:
library(scatterplot3d)
with(mtcars,scatterplot3d(wt,disp,mpg,
main = "Basic 3D scatter plot"))
scatterplot3d() 函数的设置包括:
color:用于指定数据点的颜色。
pch:用于指定数据点的形状。可以是一个整数或字符向量,对应于不同的形状选项。例如,pch = 16 表示实心圆点,pch = 3 表示倒三角形。
main:用于设置图表的标题。
xlab、ylab、zlab:用于设置 x、y、z 轴的标签。
xlim、ylim、zlim:用于设置 x、y、z 轴的显示范围。
theta、phi:用于设置视角的旋转。theta 控制水平旋转角度,phi 控制垂直旋转角度。
box:用于控制是否显示坐标轴框线。设定为 FALSE 可以隐藏框线。
type:“p”:绘制散点图(默认选项),即绘制数据点。“l”:绘制连线,将数据点按照它们在数据向量中的顺序连接起来,形成线条。“n”:不绘制任何内容,只创建一个空的 3D 坐标系。“h”绘制垂直于底部平面的线段。
11.1.3.1 设置一些scatterplot3d()的参数
library(scatterplot3d)
with(mtcars,scatterplot3d(wt,disp,mpg,
pch = 16,
type = "h",
main = "Basic 3D scatter plot"))
11.1.3.2 添加回归平面
library(scatterplot3d)
s3d <- with(mtcars,scatterplot3d(wt,disp,mpg,
pch = 16,
type = "h",
main = "Basic 3D scatter plot"))
fit <- lm(mpg~wt+disp,mtcars)
s3d$plane3d(fit)#xxx$plane3d() 函数用于在三维散点图上添加一个平面,fit为一个回归分析,因此是建立回归平面
回归面表示预测值,点为实际值,平面值到点的距离为残差值。若点在平面上,则表示预测值被低估;反之则高估。
11.1.4 旋转三维散点图
11.1.4.1 rgl包中的plot3d()函数
语法:
library(rgl)
plot3d(x,y,z)
参数包括:
1.type: 可选参数,指定绘图类型。常见的类型有:
“s”: 绘制散点图(默认值)。
“l”: 绘制线条。
“h”: 绘制线段,垂直于底部平面。
“n”: 不绘制任何内容,只创建一个空的 3D 坐标系。
2.col
3.size
举例:
library(rgl)
with(mtcars,plot3d(wt,disp,mpg,col="red",size=5))#注意这里用col而非color指定颜色
由于这个是交互式的,这里不展示,在rstudio中进行展示。
11.1.4.2 car包中的scatter3d()函数
与plot3d()相比,scatter3d()包含各种回归曲面,eg线性,二次,平滑和加性等类型的回归曲面。
语法:
library(car)
scatter3d(x,y,z)
举例:
library(car)
library(carData)
library(mgcv)
library(MASS)
library(nlme)
with(mtcars,scatter3d(wt,disp,mpg,color="red",size=5))
同样,这里不做展示,需要展示的去Rstudio中演示。
11.1.5 气泡图
先建立一个二维散点图,用点的大小代表第3个变量的值,即气泡图。
语法:
ggplot(data,
aes(x=,y=,size=,fill=factor()))+
geom_point(alpha=,
color=,
shape=)+
labs()
size= 即是圆圈大小代表的变量,
fill=factor()按这个进行分组填充,
shape可以设置为数字值,0-25之间,也可以设置为字符型:“circle”(实心圆形),“square”(实心正方形),“triangle”(实心三角形)等。
举例:
ggplot(mtcars,
aes(x=wt,y=mpg,size=disp,fill=factor(cyl)))+
geom_point(alpha=0.6,
shape="circle",
aes(color=factor(cyl)))+
labs(fill="Cylinders",color="Cylinders")+
theme_minimal()
ggplot(mtcars,
aes(x=wt,y=mpg,size=disp,color=factor(cyl)))+
geom_point(alpha=0.6,
shape="circle")+
labs(fill="Cylinders",color="Cylinders")+
theme_minimal()
两种效果是一样的!
一般来说,统计人员会倾向避免使用气泡图,因为相对于长度,体积或者面积更困难。
11.2 折线图
11.2.1 语法
将散点图上的点连起来即折线图。即在原有基础上加geom_line(),可设置的参数有:
size:线条粗细;
color:线条颜色;
linetype:线型(1实线,2虚线),另外,“solid”:实线(默认值)。“dashed”:虚线。“dotted”:点线。“dotdash”:点划线。“longdash”:长虚线。“twodash”:双划线。
11.2.2 散点图和折线图
用Orange数据集为例,包含5棵树的树龄和年轮数据。现要考察第一颗橘树的生长情况。
library(ggplot2)
tree1 <- subset(Orange,Tree==1)
tree1
## Grouped Data: circumference ~ age | Tree
## Tree age circumference
## 1 1 118 30
## 2 1 484 58
## 3 1 664 87
## 4 1 1004 115
## 5 1 1231 120
## 6 1 1372 142
## 7 1 1582 145
ggplot(tree1,aes(x=age,y=circumference))+
geom_point(size=1)+
geom_line()+
theme_bw()
用Orange数据集为例,包含5棵树的树龄和年轮数据。现要考察5颗橘树的生长情况。
library(ggplot2)
Orange
## Grouped Data: circumference ~ age | Tree
## Tree age circumference
## 1 1 118 30
## 2 1 484 58
## 3 1 664 87
## 4 1 1004 115
## 5 1 1231 120
## 6 1 1372 142
## 7 1 1582 145
## 8 2 118 33
## 9 2 484 69
## 10 2 664 111
## 11 2 1004 156
## 12 2 1231 172
## 13 2 1372 203
## 14 2 1582 203
## 15 3 118 30
## 16 3 484 51
## 17 3 664 75
## 18 3 1004 108
## 19 3 1231 115
## 20 3 1372 139
## 21 3 1582 140
## 22 4 118 32
## 23 4 484 62
## 24 4 664 112
## 25 4 1004 167
## 26 4 1231 179
## 27 4 1372 209
## 28 4 1582 214
## 29 5 118 30
## 30 5 484 49
## 31 5 664 81
## 32 5 1004 125
## 33 5 1231 142
## 34 5 1372 174
## 35 5 1582 177
ggplot(Orange,aes(x=age,y=circumference,linetype=Tree,color=Tree))+
scale_color_brewer(palette = "Set1")+#用于选择调色板
geom_point(size=1)+
geom_line()+
theme_bw()
11.3 相关图
11.3.1 corrgram()函数
来自corrgram()包(需要安装)
语法:
library(corrgram)
corrgram(x,order = ,panel = ,text.panel = ,diag.panel = )
x:是一行一个观测值的数据框
order=TRUE:相关矩阵将使用主成分分析法对变量重排序,这将使得二元变量的关系模式更为明显
panel:可以用lower.panel= 和upper.panel=分别设置主对角线下方和上方的元素类型
text.panel和diag.panel:控制主对角线元素类型。
可用的panel值见下表,其中非对角线的部分主要应用于lower.panel和upper.panel;主对角线部分主要应用于text.panel和diag.panel:
位置 | 面版选项 | 描述 |
非对角线 | panel.pie | 用饼图的填充比例来表示相关性大小 |
panel.shade | 用阴影的深度来表示相关性大小 | |
panel.ellipse | 画一个置信椭圆和平滑曲线 | |
panel.pts | 画一个散点图 | |
panel.conf | 画出相关性并包含置信区间 | |
panel.cor | 画出相关性,不包含置信区间 | |
主对角线 | panel.txt | 输出变量名 |
panel.minmax | 输出变量的最大最小值和变量名 | |
panel.density | 输出核密度曲线和变量名 |
11.3.2 举例
数据集mtcars中变量相关性,共11个变量:
cor <- cor(mtcars,method = "pearson")
cor
## mpg cyl disp hp drat wt
## mpg 1.0000000 -0.8521620 -0.8475514 -0.7761684 0.68117191 -0.8676594
## cyl -0.8521620 1.0000000 0.9020329 0.8324475 -0.69993811 0.7824958
## disp -0.8475514 0.9020329 1.0000000 0.7909486 -0.71021393 0.8879799
## hp -0.7761684 0.8324475 0.7909486 1.0000000 -0.44875912 0.6587479
## drat 0.6811719 -0.6999381 -0.7102139 -0.4487591 1.00000000 -0.7124406
## wt -0.8676594 0.7824958 0.8879799 0.6587479 -0.71244065 1.0000000
## qsec 0.4186840 -0.5912421 -0.4336979 -0.7082234 0.09120476 -0.1747159
## vs 0.6640389 -0.8108118 -0.7104159 -0.7230967 0.44027846 -0.5549157
## am 0.5998324 -0.5226070 -0.5912270 -0.2432043 0.71271113 -0.6924953
## gear 0.4802848 -0.4926866 -0.5555692 -0.1257043 0.69961013 -0.5832870
## carb -0.5509251 0.5269883 0.3949769 0.7498125 -0.09078980 0.4276059
## qsec vs am gear carb
## mpg 0.41868403 0.6640389 0.59983243 0.4802848 -0.55092507
## cyl -0.59124207 -0.8108118 -0.52260705 -0.4926866 0.52698829
## disp -0.43369788 -0.7104159 -0.59122704 -0.5555692 0.39497686
## hp -0.70822339 -0.7230967 -0.24320426 -0.1257043 0.74981247
## drat 0.09120476 0.4402785 0.71271113 0.6996101 -0.09078980
## wt -0.17471588 -0.5549157 -0.69249526 -0.5832870 0.42760594
## qsec 1.00000000 0.7445354 -0.22986086 -0.2126822 -0.65624923
## vs 0.74453544 1.0000000 0.16834512 0.2060233 -0.56960714
## am -0.22986086 0.1683451 1.00000000 0.7940588 0.05753435
## gear -0.21268223 0.2060233 0.79405876 1.0000000 0.27407284
## carb -0.65624923 -0.5696071 0.05753435 0.2740728 1.00000000
library(corrgram)
## Warning: 程辑包'corrgram'是用R版本4.3.2 来建造的
corrgram(cor,order =TRUE ,lower.panel = panel.shade,upper.panel=panel.cor,text.panel =panel.txt ,diag.panel = panel.minmax)
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
11.3.3 可以用colorRampPallette()函数指定颜色
1.先用colorRampPallette()指定颜色
2.用col.regions选项引用前者的输出结果
library(corrgram)
cols <- colorRampPalette(c("darkgoldenrod4","burlywood1","darkkhaki","darkgreen"))
corrgram(cor,order =TRUE ,col.regions=cols,
lower.panel=panel.shade,
upper.panel=panel.cor,
text.panel =panel.txt ,
diag.panel = panel.minmax)
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
## Warning in par(usr): argument 1 does not name a graphical parameter
11.4 马赛克图(vcd包中的mosaic()函数)
马赛克图是一种用于可视化两个或多个分类变量之间关系的图形。它的特点是图形中的矩形区域的面积与数据频数成比例。通过颜色、阴影或边框等方式,可以进一步表示不同类别的条件概率或关联程度。
语法:
#用法1:
mosaic(table)#table为数组形式的列联表
#用法2
mosaic(formula, data, shade = TRUE, legend = TRUE)#shade = TRUE, legend = TRUE为可选项
#用法1: mosaic(table)#table为数组形式的列联表 #用法2 mosaic(formula, data, shade = TRUE, legend = TRUE)#shade = TRUE, legend = TRUE为可选项
formula:一个公式,用于指定变量之间的关系。
data:数据框,包含相关变量。
shade = TRUE:该参数指定是否对马赛克图的矩形区域进行填充。当shade = TRUE时,每个矩形区域将使用不同的颜色进行填充,以区分不同的类别。
legend = TRUE:该参数指定是否显示图例。当legend = TRUE时,会在马赛克图的边缘添加一个图例,用于解释不同的类别或颜色所代表的含义。图例通常包括颜色示例和对应的标签。
举例:
以Titanic数据集为例,包含存活或死亡的乘客数、乘客的船舱等级、性别以及年龄层(儿童或成人)。
library(vcd)
library(grid)
Titanic
## , , Age = Child, Survived = No
##
## Sex
## Class Male Female
## 1st 0 0
## 2nd 0 0
## 3rd 35 17
## Crew 0 0
##
## , , Age = Adult, Survived = No
##
## Sex
## Class Male Female
## 1st 118 4
## 2nd 154 13
## 3rd 387 89
## Crew 670 3
##
## , , Age = Child, Survived = Yes
##
## Sex
## Class Male Female
## 1st 5 1
## 2nd 11 13
## 3rd 13 14
## Crew 0 0
##
## , , Age = Adult, Survived = Yes
##
## Sex
## Class Male Female
## 1st 57 140
## 2nd 14 80
## 3rd 75 76
## Crew 192 20
mosaic(~Class+Sex+Age+Survived,data = Titanic,shade=TRUE,legend=TRUE)
11.5 补充s3d$plane3d() 函数
其中s3d指三维散点图,s3d$plane3d()则是在s3d的三维散点图中绘制平面。配合fit使用则生成回归平面。
11.6 补充scale_color_brewer(palette = )和调色板
scale_color_brewer(palette = )是用于设置调色板
调色板可用 RColorBrewer 包提供的函数 display.brewer.all() 来查看
library(RColorBrewer)
display.brewer.all()
11.7 补充colors()函数
该函数可以返回所有657种颜色的名称