3

以下代码使用cloud按预期生成带有刻度线的图:

require(lattice)
cloud(Sepal.Length ~ Petal.Length * Petal.Width, data = iris,
scales = list(arrows=F))

当使用参数更改面板边框厚度时axis.linepar.setting边框厚度会更改,但刻度线会消失,无论tck参数是否在 内调用scales

cloud(Sepal.Length ~ Petal.Length * Petal.Width, data = iris,
scales = list(arrows=F, tck=1),
par.settings = list(
axis.line = list(lwd = 0.5)))

这似乎发生在其他 3d 函数中,例如wireframe. 有什么我忽略的,我该如何解决这个问题?非常感谢您的帮助。

4

2 回答 2

2

刻度似乎消失的原因是因为 lattice 将它们的厚度基于 axis.line 参数。

cloud(Sepal.Length ~ Petal.Length * Petal.Width, data = iris,
      scales = list(arrows=F, tck=c(3), draw = TRUE),
      par.settings = list(axis.line = list(lwd = 0.5))
      )

在上面的示例中,我将 tck 参数更改为 3,但将 lwd 参数保持为 0.5 您可以看到 R 已推出刻度标签 - 因此它们仍在渲染但看起来不可见。

现在,如果你运行:

cloud(Sepal.Length ~ Petal.Length * Petal.Width, data = iris,
      scales = list(arrows=F, tck=c(3), draw = TRUE),
      par.settings = list(axis.line = list(lwd = 2))
      )

您会看到刻度仍然存在,但正在以与 axis.line 参数的比例绘制,所以真的 - 下一个问题是:您实际上想要通过传递 axis.line = list(lwd = 0.5) 来完成什么?

于 2013-10-19T00:33:42.343 回答
2

我认为这是代码中的错误。如果您更改距离参数以使刻度线更长,然后还尝试使刻度线更粗,则会产生不同的线型而不是更粗的刻度线:

cloud(Sepal.Length ~ Petal.Length * Petal.Width, data = iris,
       scales = list(arrows=F, distance=c(2), draw = TRUE),
       par.settings = list(axis.line = list(lwd = 3)) # Dashed lines instead of thicker
       )

因此,标准频道上似乎存在一些“串扰”。此外,如果您使用该lty参数,您将获得所需的刻度宽度变化:

cloud(Sepal.Length ~ Petal.Length * Petal.Width, data = iris,
      scales = list(arrows=F, distance=c(2), draw = TRUE),
      par.settings = list(axis.line = list(lty = 0.5))   # Success
      )

我猜这也会影响线框功能,因为它们的核心非常相似,只是面板功能不同。(这是在 Mac 运行的 R 2.15.3 和 lattice 0.20-15 以及 R 3.0.2 / lattice 0.20-24 中。)

于 2013-10-19T12:34:36.737 回答