【问题标题】:set lwd of axis in par() function在 par() 函数中设置轴的 lwd
【发布时间】:2018-05-03 14:11:03
【问题描述】:

我想用一定的线宽(大约是默认 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 选项。如果您知道如何有效地为多个地块完成此操作,请回复。

【问题讨论】:

  • 我可能是错的,但我认为您要查找的内容不存在。我有一种预感,个人 axis() 调用是在基本图形中执行此操作的方法。
  • 为什么不把你的变通方法变成一个函数,这样你就可以轻松地制作几个这样的数字?
  • 我正在寻找这个,感谢这个问题!可惜没有全局 lwd 设置!

标签: r plot


【解决方案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")

【讨论】:

  • 谢谢,已经节省了一些输入。是否也可以对包含参数lwd.axis = 0.2plot() 函数进行包装?我还没有找到在绘图函数中执行此操作的方法。
  • @retodomax 添加了带有plot() 包装器的第二个解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多