【问题标题】:How to edit a Tukey test plot in R如何在 R 中编辑 Tukey 测试图
【发布时间】:2020-07-02 18:18:25
【问题描述】:

我对 ANOVA 进行了事后 Tukey 检验,然后绘制了结果图。我似乎无法更改我的 x 轴标题或 y 轴标题。我收到此错误:

Error in plot.default(c(xi[, "lwr"], xi[, "upr"]), rep.int(yvals, 2L),  : 
  formal argument "xlab" matched by multiple actual arguments

这是我的相关代码:

tuk <- TukeyHSD(final)
plot(tuk,xlab="Differences in mean departure times", ylab="Comparisons")

我还需要更改 y 轴刻度线标签,但我不知道怎么做。

谢谢。

【问题讨论】:

    标签: r plot axis-labels tukey


    【解决方案1】:

    因此,由于他们如何为TukeyHSD 类对象编写plot() 方法,默认情况下您无法更改轴标签,此详细信息隐藏在?TuketHSD 手册页中。

    但是您可以轻松地拼凑出一个允许您这样做的副本。首先使用getAnywhere(plot.TukeyHSD) 找到现有方法的代码。然后像这样调整它:

    tuk_plot <- function (x, xlab, ylab, ylabels = NULL, ...) {
      for (i in seq_along(x)) {
        xi <- x[[i]][, -4L, drop = FALSE]
        yvals <- nrow(xi):1L
        dev.hold()
        on.exit(dev.flush())
        plot(c(xi[, "lwr"], xi[, "upr"]), rep.int(yvals, 2L), 
             type = "n", axes = FALSE, xlab = "", ylab = "", main = NULL, 
             ...)
        axis(1, ...)
        # change for custom axis labels
        if (is.null(ylabels)) ylabels <- dimnames(xi)[[1L]]
    
        axis(2, at = nrow(xi):1, labels = ylabels, 
             srt = 0, ...)
        abline(h = yvals, lty = 1, lwd = 0.5, col = "lightgray")
        abline(v = 0, lty = 2, lwd = 0.5, ...)
        segments(xi[, "lwr"], yvals, xi[, "upr"], yvals, ...)
        segments(as.vector(xi), rep.int(yvals - 0.1, 3L), as.vector(xi), 
                 rep.int(yvals + 0.1, 3L), ...)
        title(main = paste0(format(100 * attr(x, "conf.level"), 
                                   digits = 2L), "% family-wise confidence level\n"), 
              # change for custom axis titles
              xlab = xlab, ylab = ylab)
    
        box()
        dev.flush()
        on.exit()
      }
    }
    

    现在您可以调整 x 和 y 轴以及自定义 y 标签:

    tuk_plot(tuk, "Hello X Axis", "Hello Y Axis", c("One", "Two", "Three"))
    

    如果您不提供 y 标签,则会显示模型中的默认标签。

    可重现的例子:

    fm1 <- aov(breaks ~ wool + tension, data = warpbreaks))
    tuk <- TukeyHSD(fm1, "tension")
    

    【讨论】:

    • 谢谢!这对我有用。如何增加此代码中轴标签的字体大小?
    • 由于这是基础 R 绘图,您可以使用 par(cex.lab= ) 修改轴标签的放大倍数,大于 1 的任何值都会增加
    猜你喜欢
    • 1970-01-01
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 2021-11-08
    • 2022-01-08
    相关资源
    最近更新 更多