首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用`c.trellis`时维护自定义的滴答标签

使用`c.trellis`时维护自定义的滴答标签
EN

Stack Overflow用户
提问于 2016-01-21 11:38:42
回答 1查看 247关注 0票数 0

我有两个格子对象,我想使用c.trellis ( latticeExtra )组合它们(这两个数字可以下载这里)。如下面所示,生成的绘图从第一个图形继承滴答标签,而丢弃来自第二个图形的标签。在使用c.trellis时可以保留不同的y轴勾标吗?

代码语言:javascript
复制
library(latticeExtra)

rsq_plt <- readRDS("rsq.rds")
err_plt <- readRDS("err.rds")

latticeExtra:::c.trellis(rsq_plt, err_plt, layout = c(1, 2))

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-18 15:16:31

为了记录在案,我似乎终于想出了一个合适的解决方案,这要归功于网格图的全面定制选项。在执行scales之前(通过scales = list(draw = FALSE);注意文件'rsq.rds‘已在线更改)在执行c.trellis之前禁用c.trellis,然后执行带有自定义y轴的组合情节update-ing解决了这个问题。

代码语言:javascript
复制
## combine plots and increase left padding
plt <- latticeExtra:::c.trellis(rsq_plt, err_plt, layout = c(1, 2))
plt <- update(plt, 
              scales = list(draw = FALSE), 
              par.settings = list(
                layout.widths = list(left.padding = 6, right.padding = 0), 
                layout.heights = list(top.padding = 0, bottom.padding = 0)
              ))

## custom panel.axis
panel.fun <- function(...) {

  # allow to draw labels outside panel
  trellis.par.set("clip", list(panel = "off", strip = "off"))

  # add upper y-axis
  if (panel.number() == 1) {
    panel.axis("left", at = 1, tck = .5, outside = TRUE,
               labels = expression("r"^2))
    panel.abline(v = 1, lty = 3, lwd = 1, col = "red")
    panel.dotplot(lwd = .5, ...)
  }

  # add lower y-axis
  if (panel.number() == 2) {
    panel.axis("left", at = 2:4, outside = TRUE, tck = .5,
               labels = c("MAE", "ME", "RMSE"))
    panel.abline(v = 0, lty = 3, lwd = 1, col = "red")
    panel.dotplot(..., lwd = 0.5)
  }
}

## apply custom axes
update(plt, panel = panel.fun)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34922798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档