统计学的含义,数据及其分类和来源
收集数据
数据分析
变量
数据
总体
样本
样本量
概率抽样
install.packages("installr") #先安装包“installr”
library(installr) #加载包
updateR() #更新
sum(x) #计算对象x总和
mean(x) #计算对象x平均数
barplot(x) #绘制对象x条形图
R代码最好是在脚本文件中编写
R控制台->文件->新建程序脚本命令,弹出R编辑器
编写完成后,选中输入的代码右键“运行当前行或所选代码”
help(sum) #弹出sum函数具体说明
?plotmath #效果与上同
help(package="stats") #state包具体说明
var #直接输入函数名,看该函数源代码
显示已安装包的名称
#显示已安装包的名称
.packages(all.available=TRUE)
安装 加载 卸载 解除 包
install.packages("car")#安装包car
install.packages(c("car","vcd")#同时安装几个包
library(car)#加载包car
require(car)#效果与上同
remove.packages("vcd")#从R中彻底删除vcd包
detach("vcd")#解除(非删除)加载到R界面中的vcd包
本书例题习题用到的所有包
install.packages(c("agricolae","aplpack","BSDA",
"car","corrgram","DescTools","doBy","e1071","fmsb"
,"forecast","ggplot2","gmodels","gplots","gridExtra",
"HH","Hmisc","lm.beta","lsr","pastecs","plotrix","plyr",
"psych","reshape","scatterplot3d","sm","TeachingDemos",
"vcd","vioplot"))
R软件自带数据集,输入名称可查看该数据集,help函数查看详细信息
help(Titanic)#查看泰坦尼克号的数据
?Titanic#与上同
数据基本类型
# 用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 3
a<-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,列数为3
byrow=TRUE) # 按行填充矩阵的元素
# 用rownames,colnames函数添加行名和列名
rownames(mat)=c("甲","乙") # 添加行名
colnames(mat)=c("A","B","C") # 添加行名
# 用t函数对矩阵转置
t(mat) # 矩阵转置
表格结构的数据,类似excel中数据表
> # 写入姓名和分数向量
> 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
> 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(table1_1,3) ;tail(table1_1,3) # 查看前3行和后3行
学生姓名 统计学 数学 经济学
1 刘文涛 68 85 84
2 王宇翔 85 91 63
3 田思雨 74 74 61
学生姓名 统计学 数学 经济学
3 田思雨 74 74 61
4 徐丽娜 88 100 49
5 丁文斌 63 82 89
> # 查看数据框的行数和列数
> nrow(table1_1) # 查看table1_1的行数
[1] 5
> ncol(table1_1) # 查看table1_1的行数
[1] 4
> dim(table1_1) # 同时查看行数和列数
[1] 5 4
> # 查看数据的类型
> class(table1_1)
[1] "data.frame"
str函数能显示什么: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:按行合并数据框(列变量必须相同)
cbind:按列合并数据框(行变量必须相同)
排序
sort:默认升序排列 decreasing=FALSE
需要降序时设置参数decreasing=TRUE
order:base包 排序结果扩散整个表格区域
arrange:dplyr包 默认升序, 降序设置参数desc(变量名)
-筛选 重命名 汇总
select:dplyr包 变量筛选或重命名
summarise:数据汇总
# 将无序因子转换为数值
a<-c("金融","地产","医药","医药","金融","医药") # 向量a
f1<-factor(a) # 将向量a编码为因子
as.numeric(f1) # 将因子转换为数值
# 将无序因子转换为有序因子或数值
b<-c("很好","好","一般","差","很差") # 向量b
# 将向量b编码为有序因子
f2<-factor(b,ordered=TRUE,levels=c("很好","好","一般","差","很差"))
as.numeric(f2) # 将因子转换为数值
read.csv:读取csv格式,默认包含标题header=FALSE
write.csv:保存csv格式在指定路径中
save:保存R格式在指定路径中
# 读取包含标题的csv格式数据
table1_1<-read.csv("C:/example/chap01/table1_1.csv")
# 读取不包含标题的csv格式数据
table1_1<-read.csv("C:/example/chap01/table1_1.csv",header=FALSE)
# 将tablel_1存为csv格式文件
write.csv(table1_1,file="C:/mydata/chap01/table1_1.csv")
# 将tablel_1存为R格式文件
save(table1_1,file="C:/mydata/chap01/table1_1.RData")
> # 生成随机数
> rnorm(n=20,mean=0,sd=1) # 产生20个标准正态分布随机数
[1] 0.19924726 -0.14862256 -0.14541055 0.02397014 2.05726569 0.54070243
[7] -1.52293849 -2.67969794 -0.69149187 -0.08224751 0.02491882 0.54702979
[13] -1.40102709 1.15944832 0.83127697 0.69801977 -0.85458047 0.68958163
[19] -2.28993715 0.17042557
> set.seed(15) # 设定随机数种子
> rnorm(n=20,mean=50,sd=5) # 产生20个均值为50、标准差为5的正态分布随机数
[1] 51.29411 59.15560 48.30191 54.48599 52.44008 43.72307 50.11394 55.45387
[9] 49.33939 44.62499 54.27505 48.17510 50.82777 43.78608 57.29644 49.98194
[17] 49.89558 50.16053 44.16361 47.40214
> runif(n=20,min=0,max=10) # 在0到10之间产生20个均匀分布随机数
[1] 9.152619 4.574306 9.210739 2.591188 3.437781 4.291725 3.302786 7.528325
[9] 8.438981 0.108724 6.667001 7.141199 7.685038 9.419001 2.480386 9.107371
[17] 6.278621 7.761303 8.178044 2.735253
> rchisq(n=20,df=15) # 产生20个卡方分布随机数
[1] 11.658757 17.344157 23.824789 11.781247 16.588682 12.754254 16.175599
[8] 10.401406 15.980531 18.076179 30.238385 9.272893 18.784349 23.903483
[15] 19.380283 17.850878 19.912369 12.756399 22.108622 11.625485
> # 抽取随机样本
> N<-1:20 # 1到20的数值向量
> n1<-sample(N,size=10);n1 # 无放回抽取10个数据
[1] 7 17 13 5 18 11 10 3 9 6
> n2<-sample(N,size=10,replace=TRUE);n2 # 有放回抽取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"
# 将table1_1中的统计学分数、统计学分数和数学分数转换为向量
table1_1<-read.csv("C:/example/chap01/table1_1.csv")
vector1<-as.vector(table1_1$统计学);vector1 # 将统计学分数转换成向量
vector2<-as.vector(c(table1_1$统计学,table1_1$数学));vector2 # 将统计学和数学分数合并转换成
vector3<-as.vector(as.matrix(table1_1[,2:4]));vector3 # 将数据框转换为向量
# 将数据框转换为矩阵
table1_1<-read.csv("C:/example/chap01/table1_1.csv")
mat<-as.matrix(table1_1[,2:4]) # 转换为矩阵mat
rownames(mat)=table1_1[,1] # 矩阵的行名为table1_1第1列的名称
mat # 查看矩阵
# 将矩阵转化成数据框
as.data.frame(mat)
> # 将短格式数据转换为长格式——有标识变量
> 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
> # 将短格式数据转换为长格式——无标识变量
> 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的前6行
课程 分数
1 统计学 68
2 统计学 85
3 统计学 74
> # 使用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
gather函数无标识变量融合
> # 使用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
频数分布表
频数分布
频数
函数:
table:base包 生成列联表
ftable:stats包 生成列联表 默认将最后一个变量作为列变量,设置参数row.vars,col.vars可改变位置
structable:vcd包 生成列联表 可创建形式多样的多维扁平化表。formula使表达式,指定行列变量。data是继承的对象。direction是拆分方向h水平c垂直。split_vertical是逻辑向量,指定每个维度是否拆分,默认为FALSE。subset为可选向量,指定要使用的观测子集,
prop.table:将频数表转化成百分比表
addmargins:为列联表添加边际和
> # 生成满意度的简单频数表
> 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
> # 生成社区与态度的二维列联表
> 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 49
Sum 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.25
Sum 33.75 21.25 26.25 18.75 100.00
> # 生成三维频数表(列变量为“社区”)
> 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 22
Sum 9 10 13 4 36
女 反对 9 2 2 4 17
赞成 9 5 6 7 27
Sum 18 7 8 11 44
Sum 反对 13 5 7 6 31
赞成 14 12 14 9 49
Sum 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
Untable:DescTools包 列联表转化成数据框
as.data.frame:里欸蓝标转化成带有类别频数的数据框
# 将列联表转换成原始数据框
read.csv("C:/example/chap01/example1_1.csv")
example1_1<-read.csv("C:/example/chap01/example1_1.csv")
library(DescTools)
mytable<-ftable(example1_1) # 生成多维列联表
df<-Untable(mytable) # 将列联表转化成原始数据框
head(df,3);tail(df,3) # 显示前3行和后3行
Untable(table(example1_1)) # 将列联表转化成数据框
# 将列联表转换成带有交叉频数标签的数据框
read.csv("C:/example/chap01/example1_1.csv")
example1_1<-read.csv("C:/example/chap01/example1_1.csv")
tab<-ftable(example1_1) # 生成列联表(可用table函数生成)
df<-as.data.frame(tab);df # 将列联表转化成带有类别频数的数据框
类别化:转化为因子数据
例:销售额生成频数分布表
cut:base包
grouped.data:actuar包
Freq:DescTools包
使用Freq函数创建的频数分布表有level组别,freq各组的频数,perc各组频数百分比,cumfreq累计频数,cumperc累计频数百分比
如果要分成特定组距的组,使用参数break确定一个分组切割点的数值向量
# 使用默认分组,含上限值
tab<- Freq(example1_2$销售额)
# 指定组距=15(不含上限值)
library(DescTools)
tab1<-Freq(example1_2$销售额,breaks=c(160,175,190,205,220,235,250,265,280),right=FALSE)
# 指定组距=15,不含上限值
tab2<-data.frame(分组=tab1$level,频数=tab1$freq,频数百分比=tab1$perc*100,累积频数=tab1$cumfreq,累积百分比=tab1$cumperc*100)
# 重新命名频数表中的变量
print(tab2,digits=3) # 用print函数定义输出结果的小数位数
两大底层绘图系统:base grid
主要介绍graphics包
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
# 图1-5(a)的绘制代码
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) 条形图")
# 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) 箱线图")
# 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()")
2. 调色板
对图形进行配色
display.brewer.all:RColorBrewer包 查看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种颜色")