#频数直方图
hist(mtcars$mpg)
本节介绍R中基础的图形工具,即不需要安装和加载扩展包即可实现的图形工具。
本节使用R自带的数据mtcars
[1] 10.4
[1] 33.9
#breaks=设置分组边界,第1组的下限要小于最小值,最后一组的上限要大于最大值。
#c()生成向量
hist(mtcars$mpg, ylim=c(0,15), xlim=c(10, 35),
breaks=c(10,15,20,25,30,35),col=4)
#seq(起点,终点,步长)生成等差序列,作为各组的边界
hist(mtcars$mpg, prob=T, ylim=c(0,0.12), xlim=c(10, 35),
breaks=seq(from=10, to=34, by=3),col=5)
#设定组数 breaks=num
#若R认为指定的组数的分组效果不佳,R会自动调整一个更适宜的组数。
#指定分10组,组距为2.4;分12组,组距为2,是整数,分组区间更加适宜阅读。
#R认为分12组更好,所以没有用“breaks= 10”.
hist(mtcars$mpg, ylim=c(0,10), xlim=c(10,35),breaks=10,col=3)

#指定分组边界 breaks=seq(起点,终点,步长)
hist(mtcars$mpg, ylim=c(0,10), xlim=c(10,35),
breaks=seq(10,34,2.4),col=5)
#添加图形标题 main="",坐标轴标题 xlab="", ylab=""
hist(mtcars$mpg, ylim=c(0,8), xlim=c(10, 35),
breaks=seq(10,34,3), main="Histogram of Mpg",
xlab="Miles per Gallon", ylab="Frequency")
#坐标轴刻度水平放置 las=1
hist(mtcars$mpg, ylim=c(0,10), xlim=c(10, 35),
breaks=seq(10,34,3), main="Histogram of Mpg",
xlab="Miles per Gallon", ylab="Frequency", las=1,,col=3)



par(mfrow=c(1,2)) #设置图形布局1行2列
hist(mtcars$mpg[mtcars$vs== 0],las=1,col=5,breaks = 5,
xlab="v-shaped",main="Histogram of Mpg",
xlim=c(10,35),ylim = c(0,12))
hist(mtcars$mpg[mtcars$vs== 1],las=1,col=5,
xlab="straight",main="Histogram of Mpg",
xlim=c(10,35),ylim = c(0,12))
#另一种写法
attach(mtcars) #锁定数据集
hist(mpg[vs== 0],las=1,col=5,breaks = 5,
xlab="v-shaped",main="Histogram of Mpg",
xlim=c(10,35),ylim = c(0,12))
cyl
4 6 8
11 7 14
par(mfrow=c(1,3)) #设置图形布局1行3列
hist(mpg[cyl==4],las=1,col=5,breaks = seq(10,35,5),
xlab="4 cylinders",main="Histogram of Mpg",
xlim=c(10,35),ylim = c(0,8))
hist(mpg[cyl==6],las=1,col=5,breaks = seq(10,35,5),
xlab="6 cylinders",main="Histogram of Mpg",
xlim=c(10,35),ylim = c(0,8))
hist(mpg[cyl==8],las=1,col=5,breaks = seq(10,35,5),
xlab="8 cylinders",main="Histogram of Mpg",
xlim=c(10,35),ylim = c(0,8))

#按vs,am分成四组后,绘制分组箱线图,设置箱体颜色,col=
boxplot(mpg~vs*am,las=2,col=c(6,5,4,3))
#legend()设置图例,"topleft"图例位置,legend=c()图例文本,fill=图例方格填充颜色,cex=图例大小缩放比例,bty = "n"图例无矩形框
legend("topleft",legend=c("v-shaped & automatic","straight & automatic","v-shaped & manual","straight & manual"),
fill = c(6,5,4,3),cex=0.8,bty = "n")
The decimal point is at the |
10 | 44
12 | 3
14 | 3702258
16 | 438
18 | 17227
20 | 00445
22 | 88
24 | 4
26 | 03
28 |
30 | 44
32 | 49
[1] 71.1 75.7 78.7 79.0 95.1 108.0 120.1 120.3 121.0 140.8 145.0 146.7
[13] 160.0 160.0 167.6 167.6 225.0 258.0 275.8 275.8 275.8 301.0 304.0 318.0
[25] 350.0 351.0 360.0 360.0 400.0 440.0 460.0 472.0
The decimal point is 2 digit(s) to the right of the |
0 | 7888
1 | 012224
1 | 556677
2 | 3
2 | 6888
3 | 002
3 | 5566
4 | 04
4 | 67
[1] 10.4 33.9
[1] 10 15 20 25 30 35
[1] [20,25) [20,25) [20,25) [20,25) [15,20) [15,20) [10,15) [20,25) [20,25)
[10] [15,20) [15,20) [15,20) [15,20) [15,20) [10,15) [10,15) [10,15) [30,35)
[19] [30,35) [30,35) [20,25) [15,20) [15,20) [10,15) [15,20) [25,30) [25,30)
[28] [30,35) [15,20) [15,20) [15,20) [20,25)
Levels: [10,15) [15,20) [20,25) [25,30) [30,35)
mpg.cut
[10,15) [15,20) [20,25) [25,30) [30,35)
5 13 8 2 4
am
vs 0 1
0 12 6
1 7 7
am
vs 0 1 Sum
0 12 6 18
1 7 7 14
Sum 19 13 32
am
vs 0 1 Sum
0 37.500 18.750 56.250
1 21.875 21.875 43.750
Sum 59.375 40.625 100.000
mpg.cut
vs [10,15) [15,20) [20,25) [25,30) [30,35)
0 5 10 2 1 0
1 0 3 6 1 4
mpg.cut
vs [10,15) [15,20) [20,25) [25,30) [30,35)
0 5 10 2 1 0
1 0 3 6 1 4
mpg.cut
vs [10,15) [15,20) [20,25) [25,30) [30,35) Sum
0 5 10 2 1 0 18
1 0 3 6 1 4 14
Sum 5 13 8 2 4 32
vs
0 1
18 14
#绘制vs的条形图
barplot(vs.table, ylim = c(0,20), col = c(3,5),
xlab = "Engine:0 = V-shaped, 1 = Straight")
axis(1, at = c(10,20))
#给条形添加分组标签name.arg = 存放标签文本的对象
#给条形标注频数text()
vs.barplot <- barplot(vs.table, ylim = c(0,20), col = c(3,5),
names.arg = c("V-shaped", "Straight"),
xlab = "Engine")
text(vs.barplot, vs.table+1, label = vs.table)
# 水平放置条形 horiz = T
# 坐标轴字体旋转las = 1
vs.barplot <- barplot(vs.table, col = c(3,4),
ylim = c(0,8),
xlim = c(0,20),
names.arg = c("V-shaped", "Straight"),
xlab = "Frequency",
ylab = "Type of Engine",
horiz = T,
las = 1, #label axis style
cex.axis = 0.8, #character expansion
cex.names = 0.8,
cex.lab = 0.9)
text(vs.table+0.7, vs.barplot, labels = vs.table,cex = 0.8)
title(main = "Barplot of Engine", line = -5)
#条形图的修饰:填充条纹、间距宽度
cyl.table <- table(cyl)
cyl.barplot <-barplot(cyl.table, col = c(3,4,5),
ylim = c(0,20),
main = "Barplot of Number of Cylinders",
names.arg = c("4 Cylinders",
"6 Cylinders","8 Cylinders"),
density = c(10,20,30),
angle = c(0,45,90),
space = c(1.5,1.5,1.5))
text(cyl.barplot, cyl.table+1, labels = cyl.table)
am
vs 0 1
0 12 6
1 7 7
vs
0 1
18 14
am
0 1
19 13
barplot(tab1,ylim=c(0,25),xlim=c(0,4),
legend.text = T,
las=1, col=rainbow(2),
density=20,angle=45,
space = 0.3,
main = "stacked barplot",cex.main = 2,
ylab="frequency", xlab="transmission")
#给图形添加矩形框
box()
#给图形添加图例,legend()函数,可进行更细致的设置
#x = "topright"设置位置,可用关键词"bottomright", "bottom", "bottomleft", "left", "topleft", "top",
#"topright", "right" and "center"
#也可直接指定图例的坐标值
#legend = c("straight", "v-shaped") 图例文本
#fill = c(5,6) 图例小方块,设置颜色
#density=20, angle=45 填充线条及角度
#cex=2 图例大小倍数
#bty="n"图例周边没有矩形框
barplot(tab1,ylim=c(0,25),xlim=c(0,4),
las=1, col=c(5,6),
density=20,angle=45,
space = 0.3,
main = "stacked barplot",cex.main = 2,
ylab="frequency", xlab="transmission")
legend(x = "topright",
legend = c("straight", "v-shaped"), # Legend texts
fill = c(5,6), # Line types
density=20, angle=45,
cex=1.2,
bty="n")
#计算engine各个类别的频数
engine_num <- table(vs)
#计算vs各个类别的百分比
engine_percent <- table(vs)/sum(table(vs))*100
# 定义标签
label1 <- names(engine_percent)
label2 <- paste0(round(engine_percent,2),"%")
#绘制饼图
pie(engine_num,main = "Pie Chart of Engine Type", col=c(4,5),labels=paste(paste(label1,label2)))
#设置扇区角度
pie(engine_num,main = "Pie Chart of Engine Type",
init.angle=90,labels = c("V-shaped:18","Straight:14"))
绘制下列向量(序列)的直方图,为直方图填充你喜爱的颜色。
生成一个服从均匀分布的向量(序列),该向量包含1000个值。
生成一个服从标准正态分布的向量(序列),该向量包含1000个值。
生成一个服从均值为80,标准差为5的正态分布的向量(序列),该向量包含1000个值。
生成一个服从自由度为5的卡方分布的向量(序列),该向量包含1000个值 。
生成一个服从自由度为5的t分布的向量(序列),该向量包含1000个值。
生成一个服从F(5,10)分布的向量(序列),该向量包含1000个值。
提示:随机数函数
正态分布 rnorm(n, mean=0, sd=1)
均匀分布 runif(n, min=0, max=100)
T分布 rt()
卡方分布 rchisq()
F分布 rf( )
数据集:mtcars
绘制qsec的直方图(纵轴代表频数),为直方图设置标题,为横轴纵轴设置合理的刻度范围,将组距设置为2, 为直方图设置你喜爱的颜色。
绘制qsec的频率直方图(纵轴代表频率),为横轴纵轴设置合理的刻度范围,在该图中添加一条概率密度曲线,为概率密度曲线设置你喜爱的颜色。
绘制wt的直方图(纵轴代表频数),为横轴纵轴设置合理的刻度范围,设置图形标题,为直方图设置你喜爱的颜色。
绘制vs的条形图,纵轴代表频数。
绘制am的条形图,条形水平放置。
绘制am的饼图。
绘制wt的箱线图。
将汽车分为手动挡和自动挡两组,绘制这两个组别wt的箱线图,并设置你喜爱的颜色。
将汽车分为手动挡和自动挡两组,绘制这两个组别qsec的箱线图,并设置你喜爱的颜色。