本节书摘来自异步社区《R绘图系统(第2版)》一书中的第2章,第2.6节,作者【新西兰】Paul Murrell,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.6 绘图函数的参数
在通常情况下,特别是绘制用于发表出版的绘图时,通过简单调用一个高级绘图函数绘制的图像并不能够满足我们的所有需求。R提供了许多方式可以修改绘图函数的输出,并且本书第3章有关于这个话题的详细谈论。这一节仅仅探讨一下通过指定高级绘图函数的参数来改进输出图形的可能性。
对于给定的某个函数其大多数参数是特定的。例如,在boxplot()函数的所有参数中有两个参数:width 和 boxwex,用于控制图形中箱子的宽度,而在barplot()函数中有一个参数horiz,是用来控制是否水平地绘制条形而不是竖直地绘制。接下来的代码展示了在boxplot()函数中使用boxwex参数以及在barplot()函数中使用horiz参数的例子(见图2.7)。
图2.7 修改前后barplot()函数和boxplot()函数的输出比较。上方的两幅图是调用boxplot()函数绘制的同样的数据,只是boxwex参数设定的值不同。下面的两幅图也调用barplot()绘制同样的数据,只是horiz参数设定的值不同。
在第一个例子中,boxplot()函数有两个调用,调用基本上是相同的,除了第二个调用指定每个箱子的宽度是默认宽度的一半(boxwex=0.5)。
> boxplot(decrease ~ treatment,data = OrchardSprays,
log = "y",col = "light gray")
> boxplot(decrease ~ treatment,data = OrchardSprays,
log = "y",col = "light gray",
boxwex=0.5)
在第二个例子中,函数barplot()调用了两次,调用基本上是相同的,除了第二个调用指定箱子是水平绘制而不是竖直绘制的(horiz=TRUE)。
> barplot(VADeaths[1:2,],angle = c(45,135),
density = 20,col = "gray",
names=c("RM","RF" ,"UM" ,"UF"))
> barplot(VADeaths[1:2,],angle = c(45,135),
density = 20,col = "gray",
names=c("RM","RF" ,"UM" ,"UF"),
horiz=TRUE)
总之,用户需要参考针对某个特定函数的说明文档来决定哪个参数可用以及使用参数所产生的效果。
2.6.1 绘图函数的标准参数
尽管许多参数的存在仅仅是针对某一个特定的绘图函数的,R系统中仍然存在着许多“标准”参数,“标准”意味着很多高级传统绘图函数都可以接受该参数。
大多数高级函数都能够接受那些控制例如颜色(col),线段类型(lty),以及字体(font和 family)等属性的绘图参数。3.2节给出了一个完整的标准参数列表并描述了它们的对绘图的影响。
不幸的是,这些标准参数的解释在某些情况下是不同的,所以需要特别注意。例如,如果在标准散点图中col参数作用是特定的,只影响数据符号的颜色(而不影响坐标轴以及坐标轴标签的颜色),但是在barplot()函数中,col参数指定了条形内部填充条形或者应用模式所使用的颜色。
此外,对于标准绘图参数,有专门用来控制绘图中坐标轴以及标签行为的标准参数。通常在调用高级绘图函数绘制一个图形的过程中,通过指定xlim或者ylim参数来调整坐标轴尺度的范围,并且通常有一个参数集来指定图形中的标签:main参数用于标题,sub参数用于子标题,xlab参数指定x轴的标签以及ylab参数指定y轴的标签。
尽管并不能够保证这些标准参数可以被扩展图形包中的高级绘图函数接受,但在多数情况下,这些参数是可以被接受的,并且可以产生期望的效果。
接下来的代码展示了一些在plot()函数中设置这些标准参数的例子(见图2.8)。所有对plot()函数的调用都使用同一组数据,并用来绘制所有数据点通过线段连接的散点图:第1个调用设置了较宽的线条(lwd=3),第2个调用设置了线条颜色为灰色(col="gray"),第3个调用将线条类型设置为虚线(lty="dashed"),第4个调用设置了较宽的y轴尺度范围(ylim=c(-4,4))。
图2.8 高级绘图函数中的标准参数。所有的4幅图都是通过调用plot()函数绘制同一组数据产生的,只是指定了不同标准参数的值。左上方的图形通过设定lwd参数控制线段粗细;右上方的图形通过设定col参数控制颜色;左下方的图形通过设定lty参数控制线条类型;右下方的图形通过设定ylim参数控制y轴的尺度。
> y<-rnorm(20)
> plot(y , type="l", lwd=3)
> plot(y, type="l", col="gray")
> plot(y, type="l", lty="dashed")
> plot(y, type="l", ylim=c(-4,4))
对于不能够只通过指定高级绘图函数参数来改变高级绘图函数默认输出的情况,可能的选项是通过低级绘图函数在已有图形上添加额外的输出(见3.4节),或者是从头开始生成一个完整的图形(见3.5节)。
有些高级函数提供了一个能够阻止某些默认输出的参数,以帮助用户定制自己的图形。例如,默认的plot()函数有一个axes参数用来帮助用户隐藏坐标轴,以及一个ann参数用来在图形中隐藏坐标轴标签,这样用户就可以自己定制图形中的坐标轴和坐标轴标签了(见3.4.4小节)。