首页 文章

删除面板轮廓/在网格线框图中添加轴刻度和颜色刻度轮廓

提问于
浏览
1

我有一系列的线图,类似于下面的例子;

require(lattice)

# set up some data
theta <- seq(-3, 3, .4)
data <- expand.grid(theta, theta)
data$z <- dnorm(data[,1]) * dnorm(data[,2])
names(data) <- c('x','y','z')

# plot it
wireframe(z ~ x * y, data,
          scales = list( arrows = FALSE),
          aspect = c(1, .6),
          drape = TRUE)

这给出了下面的情节 .

wireframe with panel bounding box

我想删除面板轮廓 . 标准解决方案是使用 par.settings = list(axis.line = list(col = 'transparent')) ;

# try to remove outline
wireframe(z ~ x * y, data,
          scales = list( arrows = FALSE),
          aspect = c(1, .6),
          drape = TRUE,
          par.settings = list(axis.line = list(col = 'transparent')))

哪个确实删除了轮廓,但不止于此...

enter image description here

轴标记以及色标周围的轮廓也被删除 . 解决方案可用于2d图,例如参见Controlling axis ticks and axis lines separately on R lattice xyplot,但我无法找到类似的3D /线框图解决方案 .

我已经尝试过根据上面的答案提供轴功能,但看起来只有顶部/底部/左/右调用功能,这对于3d绘图来说不是很有用 .

问题;

设置 par.settings = list(axis.line = list(col = 'transparent')) 时,如何阻止格子去除刻度线和刻度轮廓?

如果不这样做,在线框图上使用什么函数来刻度线,以及在色标上使用什么函数作为轮廓?

1 回答

  • 2

    这段代码可以完成这项工作 .

    wireframe(z ~ x * y, data,
              scales = list( arrows = FALSE, col="black"), # col="black" is required 
              aspect = c(1, .6),
              drape = TRUE,
              par.settings = list(axis.line = list(col = 'transparent'))
    )
    

    这改编自Seth W Bigelow's answer

相关问题