dev.new() # 打开一个新窗口,这样就不会覆盖掉原来的图
png("regress.png")
opar <- par(no.readonly=TRUE)# 以生成可供修改的图形参数列表
# 填写设置参数的代码,见1
# 填写绘图的代码,见2-6
dev.off() # 关闭这个窗口
1、设置画布
设置图片长宽和页边距
par(pin=c(3,4), mai=c(.1,.5, .1, .2))
# pin长宽,mai页边距
多图排布
par(mfrow=c(2,2)) # 2*2的四个图排列
精准控制图片的行列排布
layout(matrix(c(1, 1, 2, 3), 2, 2, byrow = TRUE),
widths=c(3, 1), heights=c(1, 2))
2、设置图片内的线条、点
par(lty=1, pch=1, lwd=1, cex=1, col="red",bg="white")
# lty线形,pch点形,lwd线条宽度,cex点的大小, col线条颜色。
参数 | 含义 |
---|---|
lty | 线形 |
lwd | 线条宽度 |
col | 线条颜色 |
pch | 点形 |
cex | 点的大小 |
bg | 背景色 |
fg | 前景色 |
3、设置标题格式
title(main="", col.main="", sub=" ", col.sub="",xlab="", ylab="",col.lab="",
cex.lab=,side.main=1)
# side.main=文字位置,1下,2左,3上,4右
注意:cex此处表示缩放倍数
参数 | 含义 |
---|---|
side | 设置标题位置 |
axis | 坐标轴 刻度 |
lab | 坐标轴 标签 |
xlim, ylim | 坐标轴范围 |
xlab,ylab | x轴,y轴(用于设置标签文字) |
main | 主标题(用于设置标签文字) |
sub | 副标题(用于设置标签文字) |
4、设置坐标轴格式
axis(side, at=seq(0,6,2), labels=seq(20,60,2), pos=, lty=1, col="black", las=0, tck=0.01,xaxt="n")
# side 在图形的哪边画坐标轴;at刻度线的位置;
# labels刻度对应的文字;pos与另一坐标轴相交的值;las平行或垂直于坐标轴
参数 | 含义 |
---|---|
at | 需要绘制刻度线的位置 |
labels | 刻度对应的文字 |
cex.axis | 坐标轴刻度的缩放倍数 |
las | label平行(=0)或垂直(=2)于坐标轴 |
pos | 与另一坐标轴相交的位置 |
5、添加辅助线
注意:abline必须在画完图之后运行。
abline(h=y值,v=x值) # 在画完图之后运行
lines(x, y, type="b", pch=22, col="blue", lty=2)
6、图例
legend("topleft",c("直线回归","二次多项式","三次多项式"),lty=c(1,2,3),col=c("black","red","blue"))
7、添加图形标签
text(2, 1.27, "text place", col="red")
# text(x,y,"标签")其中x, y是在坐标轴中的位置,然后是标签文字
8、细小刻度线
rug(side=2,jitter(df$age)) # side=1下,2左,3上,4右
x <- c(1:10)
y <- x
z <- 10/x
opar <- par(no.readonly=TRUE)
# 设置图形长宽和页边距
par(pin=c(3,4), mai=c(1,.5, 1, .2))
plot(x, y, type="b",
pch=21, col="red",
yaxt="n", lty=3,ann=FALSE)
# 在图像中添加新图形
lines(x, z, type="b", pch=22, col="blue", lty=2)
# 设置坐标轴
axis(2, at=x, labels=x, col.axis="red", las=2)
axis(3, at=z, labels=round(z, digits=2),
col.axis="blue", las=2, cex.axis=0.7, tck=-.01)
mtext("y=1/x", side=4, line=3, cex.lab=1, las=2, col="blue")
title("An Example of Creative Axes",
xlab="X values",
ylab="Y=X")
- plot()
- 箱线图
- 条形图
- 饼图
- 直方图
- 扇形图
- 核密度图
1、plot()
p.s. 画两变量的散点图,也用plot(df$ a,df$ b)
plot(x,y,type="b") # b是同时绘制点和线,p是点,l为线,不写是条形统计图
2、箱线图 boxplot
箱线图五个分位点,25%、中位数、75%,两条须的延伸极限不会超过盒型各端加1.5倍四分位距的范围。
boxplot(df$mpg) # 只有一个箱子
使用箱线图跨组比较
boxplot(mpg ~ cyl, data=df) # ~左边是统计变量,右边是分组变量。
两个交叉因子的箱线图
df$cyl.f <- factor(df$cyl, levels=c(4,6,8),labels=
c("4","6","8")) #先定义分组因子
df$am.f <- factor(df$am, levels=c(0,1), labels=
c("auto", "standard"))
boxplot(mpg ~ am.f *cyl.f, data=df, varwidth=TRUE,
col=c("gold","darkgreen"), main="MPG", xlab="Auto Type",
ylab="Miles Per Gallon")
3、条形图(柱状图) barplot()
count <- table(df$AGE)
barplot(count)
联合柱状图
barplot(table(df$tint, df$sex))
4、饼图 pie( )
自定义饼图中的每个扇形的值
slices <- c(10, 12, 4, 16, 8) # 每个扇形的面积
lbls <- c("US", "UK", "Australia", "Germany", "France")
pie(slices, labels=lbls)
用数据框内的数据画饼图
mytable <- table(df$RACE)
lbls3 <- paste(names(mytable), "\n", mytable, sep="")
pie(mytable, labels = lbls3)
3D饼图
library(plotrix)
pie3D(slices, labels=lbls,explode=0.1)
5、直方图 hist()
注:条形图和直方图的区别在于hist合并了小组。
H<- hist(df$AGE, breaks=12, col="red",freq=TRUE) # breaks组数
如果freq=TRUR则画出频数分布,如果freq=FALSE,则画出频率分布;后者加密度曲线时可以直接plot,不用添加副坐标轴。
显示分组详细情况
count1 <- table(cut(mtcars$mpg,breaks=12, right=FALSE))###分组问题!!
count2 <- prop.table(count1) # 分组比例
加入密度曲线
# 概率密度曲线
par(new = TRUE) # 在该页面上新添加图形
plot(density(d1), col="blue", lwd=2,xaxt = "n", yaxt = "n", ylab = "", xlab = "",main="")
# 必须加xaxt = "n", yaxt = "n", ylab = "", xlab = "",main="",否则文字会重叠
axis(side=4)
# 添加正态分布的密度曲线
xfit1 <- seq(min(d1), max(d1), 24)
yfit1 <- dnorm(xfit1, mean=100, sd=100)
lines(xfit1,yfit1, col="black", lwd=2)
box()#添加外框
另一种做法
x <- mtcars$mpg
h<-hist(x,breaks=12,col="red",xlab="Miles Per Gallon",main="Histogram with normal curve and box")
xfit<-seq(min(x), max(x), length=40)
yfit<-dnorm(xfit, mean=mean(x), sd=sd(x))
yfit <- yfit*diff(h$mids[1:2])*length(x)
lines(xfit, yfit, col="blue", lwd=2)
box()
6、扇形图fan.plot()
library(plotrix)
slices <- c(10, 12, 4, 16, 8)
lbls <- c("US", "UK", "Australia", "Germany", "France")
fan.plot(slices, labels = lbls, main="Fan Plot")
7、核密度图
plot(density(x))
8、经验分布函数
# AGE的经验分布函数
plot(ecdf(df$AGE),verticals = TRUE,do.p = FALSE) # do.p = FALSE表示不画点处的记号
# 用正态分布的累积函数分布图来拟合经验分布
x <- 44:78
sd<-(var(df$AGE)*(length(df$AGE)-1)/length(df$AGE))^0.5
b <- pnorm(x,mean(df$AGE),sd)
lines(x,b,col="blue")
# 3)
lines(lowess(tinting$age,tinting$it),lwd=2) # 拟合线
par(new=TRUE)
par(mar=c(-2,1,1,1))
boxplot(tinting$age,axes=F,horizontal = T)
par(new=TRUE)
par(mar=c(1,2,2,5))
boxplot(tinting$it,axes=F) ### 如何在图的两边加上boxplot???
#4)
coplot(tinting$it~tinting$age|tinting$tint) # 条件散点图
coplot(tinting$it~tinting$age|tinting$tint*tinting$sex) # 条件散点图