我想用一定的线宽绘图(约为默认值lwd
的1/5)。图中的所有行都应该有lwd
。
我做:
par(lwd = 0.2)
plot(1:10, type = "l")
结果没有问题,除了轴线和刻度线的厚度,这似乎不受par()
函数的影响。
我知道的唯一选择是分别为每个轴定义lwd:
par(lwd = 0.2)
plot(1:10, type = "l", axes = F)
axis(1, lwd = 0.2)
axis(2, lwd = 0.2)
box()
然而,这很乏味,我无法想象没有“全局”lwd
选项。如果你知道如何有效地为几个地块做这件事,请回复。
答案 0 :(得分:1)
如果我们查看axis()
函数的形式 - 默认lwd
被指定为1:
> axis
function (side, at = NULL, labels = TRUE, tick = TRUE, line = NA,
pos = NA, outer = FALSE, font = NA, lty = "solid", lwd = 1,
lwd.ticks = lwd, col = NULL, col.ticks = NULL, hadj = NA,
padj = NA, ...)
{
正如您所注意到的,它们不受此实现中par()
设置的影响。
一个简单的解决方案是为axis()
函数创建一个包装器,并默认使用par()
设置。这可能是这样的:
axislwd <- function(...) axis(lwd=par()$lwd, ...)
par(lwd = 0.2)
plot(1:10, type = "l", axes = F)
axislwd(1)
axislwd(2)
box()
或者你可以为整个绘图函数编写一个包装器:
plotlwd <- function(...) {
plot(axes = FALSE, ...)
axis(1, lwd=par()$lwd)
axis(2, lwd=par()$lwd)
box()
}
par(lwd = 0.2)
plotlwd(1:10, type="l")