第一章 数据与R语言
文章目录
- 第一章 数据与R语言
- 一、数据与统计学
-
- 1.1 什么是统计学
- 1.2 变量与数据
- 1.3 数据来源
- 二、R语言初步使用
-
- 2.1 下载、安装、更新
- 2.2 对象赋值与运行
- 2.3 查看帮助文件
- 2.4 包的安装与加载
- 三、R语言数据处理
-
- 3.1 查看R中数据
- 3.2 创建R格式的数据
-
- 向量
- 矩阵
- 数据框 data.frame
- 因子
-
- 将无序因子转换为数值
- 将无序因子转换为有序因子或数值
- 列表
- 3.3 数据读取和保存
-
- 读取外部数据
- 3.4 随机数与数据抽样
-
- 生成随机数
- 数据抽样
- 3.5 数据类型转换
-
- 变量➡️向量
- 数据框➡️矩阵
- 矩阵➡️数据框
- 短格式➡️长格式
-
- 有标识变量
- 无标识变量
- 长格式➡️短格式
- 3.6 生成频数表
-
- 类别数据的类别化
-
- 一维列联表
- 二维列联表
- 多维列联表
-
- 将列联表转化为原始数据框
- 将列联表转化为带有频数的数据框
- 数值数据类别化
- 六、R语言绘图基础
-
- 6.1 基本绘图函数
- 6.2 图形控制和页面布局
-
- 6.2.1 图形参数
- 6.2.2 页面布局
- 6.2.3 图形颜色
- par函数
- layout函数
一、数据与统计学
数据分析:
- 去哪里找所需要的数据
- 用什么方法分析数据
1.1 什么是统计学
统计学:收集数据、处理数据、分析数据(描述统计&推理统计)
描述统计:描述统计主要是利用图表形式对数据进行汇总和展示,计算一些简单的统计量(诸如比例、比率、平均数、标准差等)进行分析
推理统计:根据样本信息来推断总体的特征.包括参数估计和假设检验两大类,参数估计是利用样本信息推断所关心的总体特征,假设检验则是利用样本信息判断对总体的某个假设是否成立
1.2 变量与数据
变量:描述所观察对象某种特征
数据:对变量的观测
类别变量:取值为对象属性或类别以及区间值
类别数据
数值变量:取值为数字的变量
数值数据
1.3 数据来源
总体➡️样本➡️样本量
概率抽样:简单随机抽样(有放回&无放回)、分层抽样、系统抽样、整群抽样
二、R语言初步使用
2.1 下载、安装、更新
- 更新
install.packages("installr")
library(installr)
updateR() #更新R
2.2 对象赋值与运行
- 赋值
x<-c(1,2,3,4,5) #将5个数据赋值给对象,5个数据合并成一个向量
y<-excel1 #将数据框赋值给对象
2.3 查看帮助文件
- 查看帮助
help(sum) #查看sum函数信息
sum #查看sum函数源代码
help(package="包名") #查看包信息
?plotmath #查看R数学运算符
2.4 包的安装与加载
install.package("包名") #安装包
library(包名) #加载包
.package(all.avilable=TRUE) #显示已安装包的名称
remove.packages("包名") #卸载包
detach("包名") #解除包
三、R语言数据处理
3.1 查看R中数据
data(iris)
iris #查看数据
3.2 创建R格式的数据
数据及类型:向量、矩阵、数组、数据框、因子、列表
向量
# 用c函数创建向量
a<-c(2,5,8,3,9) # 数值型向量
b<-c("甲","乙","丙","丁") # 字符型向量
c<-c("TRUE","FALSE","FALSE","TRUE") # 逻辑值向量
# 创建向量其他方法
v1<-1:6 # 产生1~6的等差数列
v2<-seq(from=2,to=4,by=0.5) # 在2~4之间产生步长为0.5的等差数列
v3<-rep(1:3,times=3) # 将1~3的向量重复3次
v4<-rep(1:3,each=3) # 将1~3的向量中每个元素重复3次
v1;v2;v3;v4 # 运行向量v1,v2,v3,v4
[1] 1 2 3 4 5 6
[1] 2.0 2.5 3.0 3.5 4.0
[1] 1 2 3 1 2 3 1 2 3
[1] 1 1 1 2 2 2 3 3 3a<-c(2,5,8,3,9)
a[c(2,5)]
[1]5 9
矩阵
# 用matrix函数创建矩阵
a<-1:6 # 生成1到6的数值向量
mat<-matrix(a, # 创建向量a的矩阵nrow=2,ncol=3, # 矩阵行数为2,列数为3byrow=TRUE) # 按行填充矩阵的元素
# 用rownames,colnames函数添加行名和列名
rownames(mat)=c("甲","乙") # 添加行名
colnames(mat)=c("A","B","C") # 添加行名
# 用t函数对矩阵转置
t(mat) # 矩阵转置
数据框 data.frame
- 创建
> # 写入姓名和分数向量
> names<-c("刘文涛","王宇翔","田思雨","徐丽娜","丁文斌") # 写入姓名向量
> stat<-c(68,85,74,88,63) # 写入各门课程分数向量
> math<-c(85,91,74,100,82)
> econ<-c(84,63,61,49,89)> # 将向量组织成数据框形式
> table1_1<-data.frame(学生姓名=names,统计学=stat,数学=math,经济学=econ)
> # 将数据组织成数据框形式,并储存在对象table1_1中> table1_1学生姓名 统计学 数学 经济学
1 刘文涛 68 85 84
2 王宇翔 85 91 63
3 田思雨 74 74 61
4 徐丽娜 88 100 49
5 丁文斌 63 82 89
- 查看
head(table) #默认输出前六行
head(table,3) #输出前三行
tail(table) #默认输出后六行
tail(table,3) #输后三行
class(table) #查看数据类型
nrow(table) #查看数据框行数
ncol(table) #查看数据框列数
dim(table) #查看数据框行数和列数
> # 查看数据结构
> #table是一个数据框,有4个变量,每个变量有5个观测值,$后是数值变量。当数据量较大时,会省略很多数据。
> str(table1_1) # 查看tabe1_1的数据结构
'data.frame': 5 obs. of 4 variables:$ 学生姓名: chr "刘文涛" "王宇翔" "田思雨" "徐丽娜" ...$ 统计学 : num 68 85 74 88 63$ 数学 : num 85 91 74 100 82$ 经济学 : num 84 63 61 49 89
- 合并
rbind(table1,table2) #按行合并数据框(列变量必须相同)
cbind(table1,table2)#按列合并数据框(行变量必须相同)
- 排序
arrange(table,姓名) #package(dplyr)
table[order(table$姓名),]
sort(table$姓名)
#按姓名升序排列
arrange(table,desc(姓名))
table[order(table$姓名),decreasing =TRUE]
sort(table$姓名,decreasing =TRUE)
#按姓名升序降列
因子
因子:类别变量
水平:因子取值
将无序因子转换为数值
a<-c("金融","地产","医药","医药","金融","医药") # 向量a
f1<-factor(a) # 将向量a编码为因子
as.numeric(f1)
[1] 2 1 3 3 2 3 # 将因子转换为数值
将无序因子转换为有序因子或数值
b<-c("很好","好","一般","差","很差") # 向量b
f2<-factor(b,ordered=TRUE,levels=c("很好","好","一般","差","很差"))
# 将向量b编码为有序因子
as.numeric(f2) # 将因子转换为数值
[1] 1 2 3 4 5
列表
列表:一些对象的集合
list:创建列表
一个列表中可能包含若干向量、矩阵、数据框等
3.3 数据读取和保存
读取外部数据
table<-read.csv("路径.csv") #读取csv格式数据
table<-read.csv("路径.csv",header=FALSE) #读取csv格式数据,不含标题load("路径.RData") #读取R格式数据
write.csv(table,file="路径.csv") #保存为csv格式save(table,file="路径.RData") #保存为R格式
3.4 随机数与数据抽样
生成随机数
相应分布函数前+r
设置种子,保证你随机生成的随机数前后一致,使每次运行产生相同一组随机数
括号里面的参数可以是任意数字,是代表你设置的第几号种子而已,不会参与运算,是个标记而已。
set.seed(10) #设定随机数种子
rnorm(n=20,mean=0,sd=1) #二十个标准正态分布随机数
rnorm(n=20,mean=50,sd=5) #二十个均值为五十,标准差为5的正态分布随机数
runif(n=20,min=0,max=10) #0-10之间产生20个均匀分布随机数
rchisq(n=20,df=15)#产生20个自由度为15卡方分布随机数
数据抽样
n<-1:10
sample(n,size=10) #无放回抽取10个数据
[1] 7 17 13 5 18 11 10 3 9 6
sample(n,size=10,replace=TRUE) #有放回抽取10个数据
[1] 3 8 2 11 9 6 19 14 20 9
> Ncols<-c("black","red","green","blue","yellow") # 5种不同的颜色向量
> ncols<-sample(Ncols,size=8,replace=TRUE);ncols # 有放回抽取8个颜色
[1] "green" "yellow" "yellow" "black" "green" "green" "red" "blue"
3.5 数据类型转换
变量➡️向量
vector<-as.vector(table$col)
vector<-as.vector(c(table$col1,table$col2))
vector<-as.vector(as.matrix(table[row,col])) #数据框转换为向量
数据框➡️矩阵
# 将数据框转换为矩阵
mat<-as.matrix(table1_1[,2:4]) # 转换为矩阵mat
rownames(mat)=table1_1[,1] # 矩阵的行名为table1_1第1列的名称
mat # 查看矩阵
矩阵➡️数据框
table<-as.data.frame(mat)
短格式➡️长格式
合并一些列->长格式
gather(tidyr包 )
有标识变量
melt函数中的id.vars称为标识变量,用于指定按哪些因子汇集其他变量的值
library(reshape2)
melt:融合列表(id.vars variable.name value.name)
# 将短格式数据转换为长格式——有标识变量
> table1_1姓名 统计学 数学 经济学
1 刘文涛 68 85 84
2 王宇翔 85 91 63
3 田思雨 74 74 61
4 徐丽娜 88 100 49
5 丁文彬 63 82 89
> library(reshape2) # 加载reshape2包
> tab.long<-melt(table1_1,id.vars="姓名",variable.name="课程",value.name="分数")
> # 融合table1_1与id变量,并命名variable.name="课程",value.name="分数“
> tab.long # 显示tab.long姓名 课程 分数
1 刘文涛 统计学 68
2 王宇翔 统计学 85
3 田思雨 统计学 74
4 徐丽娜 统计学 88
5 丁文彬 统计学 63
6 刘文涛 数学 85
7 王宇翔 数学 91
8 田思雨 数学 74
9 徐丽娜 数学 100
10 丁文彬 数学 82
11 刘文涛 经济学 84
12 王宇翔 经济学 63
13 田思雨 经济学 61
14 徐丽娜 经济学 49
15 丁文彬 经济学 89
> # 使用tidyr包中的gather函数转换为长格式(有标识变量)
> table1_1姓名 统计学 数学 经济学
1 刘文涛 68 85 84
2 王宇翔 85 91 63
3 田思雨 74 74 61
4 徐丽娜 88 100 49
5 丁文彬 63 82 89
> library(tidyr)
> df1<-gather(table1_1,key="课程",value="分数","统计学","数学","经济学") # key为融合后的变量名称
> df1姓名 课程 分数
1 刘文涛 统计学 68
2 王宇翔 统计学 85
3 田思雨 统计学 74
4 徐丽娜 统计学 88
5 丁文彬 统计学 63
6 刘文涛 数学 85
7 王宇翔 数学 91
8 田思雨 数学 74
9 徐丽娜 数学 100
10 丁文彬 数学 82
11 刘文涛 经济学 84
12 王宇翔 经济学 63
13 田思雨 经济学 61
14 徐丽娜 经济学 49
15 丁文彬 经济学 89
无标识变量
不使用id变量,自动融合
> # 将短格式数据转换为长格式——无标识变量
> table1_3统计学 数学 经济学
1 68 85 84
2 85 91 63
3 74 74 61
4 88 100 49
5 63 82 89
> library(reshape2) # 加载reshape2包
> tab.long<-melt(table1_3,variable.name="课程",value.name="分数")
No id variables; using all as measure variables
> head(tab.long,3) # 显示tab.long的前3行课程 分数
1 统计学 68
2 统计学 85
3 统计学 74
> # 使用tidyr包中的gather函数转换为长格式(无标识变量)
> table1_3统计学 数学 经济学
1 68 85 84
2 85 91 63
3 74 74 61
4 88 100 49
5 63 82 89
> library(tidyr)
> df2<-gather(table1_3,key="课程",value="分数","统计学","数学","经济学")
> df2课程 分数
1 统计学 68
2 统计学 85
3 统计学 74
4 统计学 88
5 统计学 63
6 数学 85
7 数学 91
8 数学 74
9 数学 100
10 数学 82
11 经济学 84
12 经济学 63
13 经济学 61
14 经济学 49
15 经济学 89
长格式➡️短格式
拆开->短格式
dcast:reshape2包 长转短
spread:tidyr包 长转短
3.6 生成频数表
类别数据的类别化
一维列联表
将频数表转化为百分数表:
prop.table(mytable)*100
> # 生成满意度的简单频数表
> example1_1<-read.csv("example1_1.csv")
> mytable<-table(example1_1$社区);mytable
A社区 B社区 C社区 D社区 27 17 21 15
> # 生成频数表
> prop.table(mytable)*100 # 将频数表转化成百分比表
A社区 B社区 C社区 D社区
33.75 21.25 26.25 18.75
二维列联表
添加边际和:
addmargins(mytable)
将频数表转化为百分数表
addmargins(prop.table(mytable)*100)
> a<-table(example1_1)
> a
, , 态度 = 反对性别
社区 男 女A社区 4 9B社区 3 2C社区 5 2D社区 2 4, , 态度 = 赞成性别
社区 男 女A社区 5 9B社区 7 5C社区 8 6D社区 2 7> # 生成社区与态度的二维列联表
> example1_1<-read.csv("example1_1.csv")
> attach(example1_1) # 绑定数据
> mytable1<-table(态度,社区);mytable1 # 生成性别和满意度的二维列联表社区
态度 A社区 B社区 C社区 D社区反对 13 5 7 6赞成 14 12 14 9
> addmargins(mytable1) # 为列联表添加边际和社区
态度 A社区 B社区 C社区 D社区 Sum反对 13 5 7 6 31赞成 14 12 14 9 49Sum 27 17 21 15 80
> addmargins(prop.table(mytable1)*100) # 将列联表转换成百分比表社区
态度 A社区 B社区 C社区 D社区 Sum反对 16.25 6.25 8.75 7.50 38.75赞成 17.50 15.00 17.50 11.25 61.25Sum 33.75 21.25 26.25 18.75 100.00
多维列联表
确定多维列联表行列
ftable(example1_1,row.vars=c(“社区”),col.vars=c(“性别”,“态度”))
> # 生成三维频数表(列变量为“社区”)
> example1_1<-read.csv("example1_1.csv")
> mytable2<-ftable(example1_1,row.vars=c("性别","态度"),col.vars="社区")
> # 行变量为性别和态度,列变量为社区
> mytable2社区 A社区 B社区 C社区 D社区
性别 态度
男 反对 4 3 5 2赞成 5 7 8 2
女 反对 9 2 2 4赞成 9 5 6 7
> # 为列联表添加边际和
> ftable(addmargins(table(example1_1$性别,example1_1$态度,example1_1$社区))) A社区 B社区 C社区 D社区 Sum
男 反对 4 3 5 2 14赞成 5 7 8 2 22Sum 9 10 13 4 36
女 反对 9 2 2 4 17赞成 9 5 6 7 27Sum 18 7 8 11 44
Sum 反对 13 5 7 6 31赞成 14 12 14 9 49Sum 27 17 21 15 80
> # 生成三维频数表(列变量为"社区",行变量为“性别”和"满意度")
> ftable(example1_1,row.vars=c("社区"),col.vars=c("性别","态度"))性别 男 女 态度 反对 赞成 反对 赞成
社区
A社区 4 5 9 9
B社区 3 7 2 5
C社区 5 8 2 6
D社区 2 2 4 7
> library(vcd)
> structable(example1_1$性别+example1_1$态度~example1_1$社区,example1_1)example1_1$性别 男 女 example1_1$态度 反对 赞成 反对 赞成
example1_1$社区
A社区 4 5 9 9
B社区 3 7 2 5
C社区 5 8 2 6
D社区 2 2 4 7> structable(example1_1,dirction=c("example1_1$社区","example1_1$性别","example1_1$态度"))性别 男 女
社区 态度
A社区 反对 4 9赞成 5 9
B社区 反对 3 2赞成 7 5
C社区 反对 5 2赞成 8 6
D社区 反对 2 4赞成 2 7
> library(DescTools)
> mytable<-ftable(example1_1) #生成多维列联表
> mytable态度 反对 赞成
社区 性别
A社区 男 4 5女 9 9
B社区 男 3 7女 2 5
C社区 男 5 8女 2 6
D社区 男 2 2女 4 7
将列联表转化为原始数据框
> library(DescTools)
> mytable<-ftable(example1_1) #生成多维列联表
> df<-Untable(mytable) #将列联表转化为原始数据框
> df社区 性别 态度
1 A社区 男 反对
2 A社区 男 反对
3 A社区 男 反对
4 A社区 男 反对
5 B社区 男 反对...
将列联表转化为带有频数的数据框
> tab<-ftable(example1_1)
> tab态度 反对 赞成
社区 性别
A社区 男 4 5女 9 9
B社区 男 3 7女 2 5
C社区 男 5 8女 2 6
D社区 男 2 2女 4 7
> df<-as.data.frame(tab)
> df社区 性别 态度 Freq
1 A社区 男 反对 4
2 B社区 男 反对 3
3 C社区 男 反对 5
4 D社区 男 反对 2
5 A社区 女 反对 9
6 B社区 女 反对 2
7 C社区 女 反对 2
8 D社区 女 反对 4
9 A社区 男 赞成 5
10 B社区 男 赞成 7
11 C社区 男 赞成 8
12 D社区 男 赞成 2
13 A社区 女 赞成 9
14 B社区 女 赞成 5
15 C社区 女 赞成 6
16 D社区 女 赞成 7
数值数据类别化
首先转化为因子,再生成频数分布表
> library(DescTools)
> tab<-Freq(example1_2$销售额)
> tablevel freq perc cumfreq cumperc
1 [160,170] 2 1.7% 2 1.7%
2 (170,180] 4 3.3% 6 5.0%
3 (180,190] 7 5.8% 13 10.8%
4 (190,200] 21 17.5% 34 28.3%
5 (200,210] 25 20.8% 59 49.2%
6 (210,220] 19 15.8% 78 65.0%
7 (220,230] 16 13.3% 94 78.3%
8 (230,240] 13 10.8% 107 89.2%
9 (240,250] 6 5.0% 113 94.2%
10 (250,260] 4 3.3% 117 97.5%
11 (260,270] 2 1.7% 119 99.2%
12 (270,280] 1 0.8% 120 100.0%
> tab<-Freq(example1_2$销售额,breaks = c(160,175,190,205,220,235,250,265,280),right=FALSE)
> tab1<-data.frame(分组=tab$level,频数=tab$freq,频数百分比=tab$perc*100,积累频数=tab$cumfreq,累计百分比=tab$cumperc*100)
> tab1分组 频数 频数百分比 积累频数 累计百分比
1 [160,175) 6 5.000000 6 5.00000
2 [175,190) 7 5.833333 13 10.83333
3 [190,205) 30 25.000000 43 35.83333
4 [205,220) 34 28.333333 77 64.16667
5 [220,235) 21 17.500000 98 81.66667
6 [235,250) 15 12.500000 113 94.16667
7 [250,265) 5 4.166667 118 98.33333
8 [265,280] 2 1.666667 120 100.00000
六、R语言绘图基础
两大底层绘图系统:base grid
6.1 基本绘图函数
graphics中
- 高级绘图函数(直接产生图形)
- 低级绘图函数(标题、文本注释、线段)
plot:反函数,可绘制多种图形
barplot:条形图
hist:直方图
boxplot:箱线图
legend:添加图例
layout:页面布局
mtext:为图形添加注释文本
par(mai=c(0.6,0.6,0.4,0.4),cex=0.7) # 设置图形边界和符号的大小
set.seed(2025) # 设置随机数种子
x <- rnorm(200) # 产生200个标准正态分布的随机数
y <- 1+2*x +rnorm(200) # 产生变量y的随机数
d<-data.frame(x,y) # 将数据组织成数据框d
plot(d,xlab="x=自变量",ylab="y=因变量") # 绘制散点图
grid(col="grey60") # 添加网格线
axis(side=4,col.ticks="blue",lty=1) # 添加坐标轴
polygon(d[chull(d),],lty=6,lwd=1,col="lightgreen") # 添加多边形并填充底色
points(d) # 重新绘制散点图
points(mean(x),mean(y),pch=19,cex=5,col=2) # 添加均值点
abline(v=mean(x),h=mean(y),lty=2,col="gray30") # 添加均值水平线和垂直线
abline(lm(y~x),lwd=2,col=2) # 添加回归直线
lines(lowess(y ~ x,f=1/6),col=4,lwd=2,lty=6) # 添加拟合曲线
segments(-0.8,0,-1.6,3.3,lty=6,col="blue") # 添加线段
arrows(0.45,-2.2,-0.8,-0.6,code=2,angle=25,length=0.06,col=2) # 添加带箭头的线段
text(-2.2,3.5,labels=expression("拟合的曲线"),adj=c(-0.1,0.02),col=4) # 添加注释文本
rect(0.4, -1.6, 1.8,-3,col="pink",border="grey60") # 添加矩形mtext(expression(hat(y)==hat(beta)[0]+hat(beta)[1]*x),cex=0.9,side=1,line=-2.5,adj=0.7) # 添加注释表达式legend("topleft",legend=c("拟合的直线","拟合的曲线"),lty=c(1,6),col=c(2,4),cex=0.8,fill=c("red","blue"),box.col="grey60",ncol=1,inset=0.02) # 添加图例
title("散点图及拟合直线和曲线\n并为图形增加新的元素",cex.main=1,font.main=4) # 增加标题并折行,使用斜体字
box(col=4,lwd=2) # 添加边框14
6.2 图形控制和页面布局
6.2.1 图形参数
- par函数中参数:
绘图符号pch
线型lty
线宽lwd
点的大小pt.cex
位置调整参数adj
主要颜色col
6.2.2 页面布局
页面分割和图形组合方法
- par函数
mfrow、mfcol将绘图页面分割成nr*nc的矩阵,然后在每个分割区域填充一张图 mfrow=c(nr,nc)按行填充各图
mfcol=c(nr,nc)按列填充各图
par(mfrow=c(2,2),mai=c(0.4,0.4,0.3,0.1),cex=0.7,mgp=c(2,1,0),cex.axis=0.8,cex.main=0.8,font.main=1)
set.seed(123) # 设置随机数种子
x<-rnorm(100) # 生成100个标准正态分布随机数
y<-rexp(100) # 生成100个指数分布随机数
plot(x,y,col=sample(c("black","red","blue"),100,replace=TRUE),main="(a) 散点图")
boxplot(x,y,col=2:3,main="(b) 箱线图")
hist(x,col="orange1",ylab="y",main="(c) 直方图")
barplot(runif(5,10,20),col=2:6,main="(d) 条形图")
- layout函数
可设置参数widths和heights将矩阵分割成大小不同的区域
使用layout.show函数可以进行预览
# 2行2列的图形矩阵,第2列为1个图
layout(matrix(c(1,2,3,3),nrow=2,ncol=2,byrow=TRUE),heights=c(2,1))
layout.show(3)
# 2行2列的图形矩阵,第2列为1个图
layout(matrix(c(1,2,3,3),nrow=2,ncol=2),heights=c(2,1))
layout.show(3)
# 2行3列的图形矩阵,第2行为3个图
layout(matrix(c(1,1,1,2,3,4),nrow=2,ncol=3,byrow=TRUE),widths=c(3:1),heights=c(2,1))
layout.show(4)
# 3行3列的图形矩阵,第2行为2个图
layout(matrix(c(1,2,3,4,5,5,6,7,8),3,3,byrow=TRUE),widths=c(2:1),heights=c(1:1))
layout.show(8)
# 绘制代码
n=100;set.seed(12);x<-rnorm(n);y<-rexp(n)
layout(matrix(c(1,2,3,4,5,5,6,7,8),3,3,byrow=TRUE),widths=c(2:1),heights=c(1:1))
par(mai=c(0.3,0.3,0.3,0.1),cex.main=0.9,font.main=1)
barplot(runif(8,1,8),col=2:7,main="(a) 条形图")
pie(1:12,col=rainbow(6),labels="",border=NA,main="(b) 饼图")
qqnorm(y,col=1:7,pch=19,xlab="",ylab="",main="(c) Q-Q图")
plot(x,y,pch=19,col=c(1,2,4),xlab="",ylab="",main="(d) 散点图")
plot(rnorm(25),rnorm(25),cex=(y+2),col=2:4,lwd=2,xlab="",ylab="",main="(e) 气泡图")
plot(density(y),col=4,lwd=1,xlab="",ylab="",main="(f) 核密度图");polygon(density(y),col="gold",border="blue")
hist(rnorm(1000),col=3,xlab="",ylab="",main="(g) 直方图")
boxplot(x,col=2,main="(h) 箱线图")
6.2.3 图形颜色
- 颜色名称和颜色集合函数
colors():查看R软件中所有颜色
graphics中
col设置绘图区域中的绘制的数据符号、线条、文本等元素颜色
bg设置图形背景颜色
fg设置图形的前景颜色
# col的设置
x<-1:10 # 生成1到10的等差数列
a<- LETTERS[1:10] # 生成字母标签向量
par(mfrow=c(1,2),mai=c(0.4,0.4,0.3,0.2),cex=0.8,cex.axis=0.7,cex.lab=0.8,mgp=c(2,1,0),cex.main=0.9,font.main=1) # 图形参数设置
barplot(x,names=a,col=c("red","green"),main="(a) 循环使用2种颜色")
barplot(x,names=a,col=1:8,main="(b) 重复使用颜色1:8")
# 颜色集合
par(mfrow=c(2,3),mai=c(0.3,0.3,0.3,0.1),cex=0.7,mgp=c(1,1,0),cex.axis=0.7,cex.main=1,font.main=1)
x<-1:7
names<-LETTERS[1:7] # 生成字母标签向量
barplot(x,names=names,col=rainbow(7),main="col=rainbow()")
barplot(x,names=names,col=rainbow(7,start=0.4,end=0.5),main="col=rainbow(start=0.4,end=0.5)")
barplot(x,names=names,col=heat.colors(7),main="col=heat.colors()")
barplot(x,names=names,col=terrain.colors(7),main="col=terrain.colors()")
barplot(x,names=names,col=topo.colors(7),main="col=topo.colors()")
barplot(x,names=names,col=cm.colors(7),main="col=cm.colors()")
- 调色板
display.brewer.all 查看R的调色板
brewer.pal 创建自己的调色板
# 图1-9的绘制代码——使用调色板
library(RColorBrewer)
par(mfrow=c(2,3),mai=c(0.1,0.3,0.3,0.1),cex=0.6,font.main=1)
palette1<-brewer.pal(7,"Reds") # 7种颜色的红色连续型调色板
palette2<-brewer.pal(7,"Set1") # 7种颜色的离散型调色板
palette3<-brewer.pal(7,"RdBu") # 7种颜色的红蓝色极端值调色板
palette4<-rev(brewer.pal(7,"Greens")) # 调色板颜色反转
palette5<-brewer.pal(8,"Spectral")[-1] # 去掉第1种颜色,使用其余7种
palette6<-brewer.pal(6,"RdYlBu")[2:4] # 使用其中的2:4种颜色
barplot(1:7,col=palette1,main="(a) 红色连续型调色板")
barplot(1:7,col=palette2,main="(b) 离散型调色板")
barplot(1:7,col=palette3,main="(c) 极端值调色板")
barplot(1:7,col=palette4,main="(d) 调色板颜色反转")
barplot(1:7,col=palette5,main="(e) 去掉第1种颜色")
barplot(1:7,col=palette6,main="(f) 使用其中的2:4种颜色")
par函数
layout函数
————————————————
版权声明:本文为CSDN博主「苟悌」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jiangti_ng/article/details/121162222