3.1 常用图形参数
R是一个功能强大的图形构建平台,可以逐条输入语句构建图形元素(颜色、点、线、文本等),逐渐完善图形,直至得到想要的结果。
更改图形参数有两种方式,一种是直接在绘图函数中设置参数,这种方式只影响当前的绘图函数;另一种是通过par()函数设置,这种方式会影响当前绘图设备上的所有图形。
3.1.1 颜色元素
R语言可以设置绘图参数col,改变图像、坐标轴、文字、点、线等的颜色。例如,对数据集women绘制红色散点图,只需将col参数设置为"red",如图3-1所示。
> plot(women,col="red") # 通过颜色名称设置散点颜色除了通过将颜色赋值给col参数外,也可以通过颜色下标、十六进制的颜色值和RGB值给col参数赋值。以下代码可以绘制和图3-1相同的效果。> plot(women,col=554) # 通过颜色下标设置> plot(women,col="#FF0000") #通过十六进制的颜色值设置> mycolor<- rgb(red=255,green=0,blue=0,max=255)> plot(women,col=mycolor) # 通过RGB值设置除了利用col参数控制绘图颜色外,也可以通过其他参数来设置图形的前景色、背景色、标题颜色、坐标轴颜色等。参数描述如表3-1所示。
对图3-1增加主标题、副标题,且将主标题的颜色设置为绿色,副标题的颜色设置为蓝色,X轴坐标的刻度文字设置为灰色,刻度标签设置为黄色。只需执行以下脚本,得到的结果如图3-2所示。
> plot(women,main="身高 VS 体重散点图",sub="数据来源:women数据集",+ col="red",col.main="green",col.sub="blue",+ col.axis="grey",col.lab="yellow")
R语言提供了自带的固定种类颜色,主要涉及的函数是colors(),该函数可以生成657种颜色名称,代表657种颜色,具体如下。
> colors()[1] "white" "aliceblue" "antiquewhite"[4] "antiquewhite1" "antiquewhite2" "antiquewhite3"[7] "antiquewhite4" "aquamarine" "aquamarine1"……[649] "wheat3" "wheat4" "whitesmoke"[652] "yellow" "yellow1" "yellow2"[655] "yellow3" "yellow4" "yellowgreen"除了固定颜色选择函数外,R本身也提供了特定颜色主题的配色方案。这些配色方案用一系列渐变的颜色表现特定的主题,如rainbow()、heat.colors()、terrain,colors()、topo.colors()、cm.colors()等函数。函数说明如表3-2所示。
执行以下脚本,得到5个由不同主题函数绘制的柱状图,如图3-2所示。
> barplot(rep(1,7),col=rainbow(7),main="barplot(rep(1,7),col=rainbow(7))")> barplot(rep(1,7),col=heat.colors(7),main="barplot(rep(1,7),col=heat.colors(7))")> barplot(rep(1,7),col=terrain.colors(7),main="barplot(rep(1,7),col=terrain.colors(7))")> barplot(rep(1,7),col=topo.colors(7),main="barplot(rep(1,7),col=topo.colors(7))")> barplot(rep(1,7),col=cm.colors(7),main="barplot(rep(1,7),col=cm.colors(7))")> par(mfrow=c(1,1))
3.1.2 文字元素
文字元素可以设置的参数一般包括:字体(font)、颜色(col)、大小(cex)等,颜色在上一小节已经介绍过,这里重点讲解如何设置文字的字体和大小。
可以通过font参数来设置字体。font参数的取值是一个整数,一般分别用1、2、3、4、4来表示正常体、粗体、斜体和粗斜体。
执行以下脚本,得到4种常用字体的样式,如图3-4所示。
> plot(0:4,type="n",axes = F,xlab = NA,ylab = NA)> type <- c("正常字体(默认)","粗体字体","斜体字体","粗斜体字体")> for(i in 1:4){+ text(2,5-i,labels = paste0("font=",i,":",type[i]),font = i)+ }可以通过cex参数来设置文字的大小。cex(缩放倍数)参数的取值是一个实数,默认为1,表示不缩放。取值小于1时,表示缩小,取值大于1时,表示放大。以下代码中的cex分别取0.5、0.8、1、1.5、2,得到的文字大小样式如图3-5所示。
> plot(0:5,type="n",axes = F,xlab = NA,ylab = NA)> text(2,5,labels="cex=0.5:放大0.5倍",cex=0.5)> text(2,4,labels="cex=0.8:放大0.8倍",cex=0.8)> text(2,3,labels="cex=1(默认):正常大小",cex=1)> text(2,2,labels="cex=1.5:放大1.5倍",cex=1.5)> text(2,1,labels="cex=2:放大2倍",cex=2)3.1.3 点元素
点元素可以设置的参数一般包括:点样式(pch)、颜色(col)、大小(cex)等。前文已经介绍过颜色和大小,接下来学习点样式pch参数。
pch(点样式)参数可取0~25的数字,对于符号21~25,还可以指定边界颜色(col=)和填充色(bg=)。下面代码中的pch取值为0~25,结果如图3-6所示。
> plot(1,col="white",xlim=c(1,7),ylim=c(1,5),+ main = "点样式 pch=",xlab=NA,ylab=NA)> for(i in c(0:25)){+ x<-(i %/% 5)*1+1+ y<-6-(i%%5)-1+ if(length(which(c(21:25)==i)>=1)){+ points(x,y,pch=i,col="blue",bg="yellow",cex=2)+ } else {+ points(x,y,pch=i,cex=2)+ }+ text(x+0.2,y,labels = i)+ }
此外,pch参数也可以是""里的单个字符。例如,pch的取值可以为"*,?,a,A,0,.,+,-,|"。执行以下代码,效果如图3-7所示。
> # pch取值可以为"*,?,a,A,0,.,+,-,|"> points(6,4,pch="*",cex=2);text(6+0.2,4,labels=""*"")> points(6,3,pch="?",cex=2);text(6+0.2,3,labels=""?"")> points(6,2,pch="a",cex=2);text(6+0.2,2,labels=""a"")> points(6,1,pch="A",cex=2);text(6+0.2,1,labels=""A"")> points(7,5,pch="0",cex=2);text(7+0.2,5,labels=""0"")> points(7,4,pch=".",cex=2);text(7+0.2,4,labels=""."")> points(7,3,pch="+",cex=2);text(7+0.2,3,labels=""+"")> points(7,2,pch="-",cex=2);text(7+0.2,2,labels=""-"")> points(7,1,pch="|",cex=2);text(7+0.2,1,labels=""|"")
3.1.4 线元素
线元素可以设置的参数一般包括:线条样式(lty)、颜色(col)、粗细(lwd)等。其中线的粗细lwd参数与文本及点的大小cex相似,lwd(宽度)参数默认为1,表示不缩放。取小于1时,表示缩小,取大于1时,表示放大。
线条样式(lty)主要是指实线、虚线、点线、点划线等的样式。lty参数的不同数值对应不同的线条样式,如表3-3所示。
运行下面的代码,可以查看lty参数取值为0~6时的样式,结果如图3-8所示。
> plot(x=1:10,y=rep(1,10),type="l",lty=0,ylim=c(1,8),xlim=c(-1,10),+ axes=F,xlab=NA,ylab=NA)> text(0,1,labels="lty=0")> for(i in 2:7){+ lines(x=1:10,y=rep(i,10),lty=i-1,xlab=NA, ylab=NA)+ text(0,i,labels=paste0("lty=",i-1))+ }
继续阅读与本文标签相同的文章
《并行计算的编程模型》一2.3.4 锁与中断
-
AI+5G科技创新 视频行业呈现轻应用化趋势
2026-05-14栏目: 教程
-
1.98亿滴滴用户添加了紧急联系人 每天百万个订单行程分享给亲友
2026-05-14栏目: 教程
-
工程院院士刘韵洁:5G前景很大,但主要是行业应用
2026-05-14栏目: 教程
-
陆奇:看好5G技术,但应用好5G还需要时间
2026-05-14栏目: 教程
-
在Visual Studio中使用clang-tidy进行代码分析
2026-05-14栏目: 教程
