【问题标题】:Writing a number on a plot with a decimal digit在带有十进制数字的绘图上写一个数字
【发布时间】:2014-06-02 13:18:57
【问题描述】:

例如,我有一个这样的向量:

time <- c(0, 0.5, 1, 1.5, 2, 2.5)

如果我必须在图表中写第三个元素,我必须使用这个命令:

text(7.5,75, time[3])

显示为 1,但我希望显示为 1.0,如何使第一个十进制数字显示?

【问题讨论】:

  • R 中的索引从 1 开始,而不是从 0。此外,您可以使用 sprintf 格式化数字。

标签: r text plot digits


【解决方案1】:

使用sprintf("%.1f", time),您可以将十进制数字设置为 1。

【讨论】:

    【解决方案2】:

    这是包装sprintf 的一种方法。这是我保留的报告。请注意,它还会删除不重要的前导零。

    numfor <- function (val, digits, override = FALSE) {
    
        if (all(is.Integer(val), na.rm = TRUE) & !override) {
            sub("^(-?)0.", "\\1.", sprintf(paste0("%.0f"), val))
        } else {
            sub("^(-?)0.", "\\1.", sprintf(paste0("%.", digits, "f"), val))
        }
    }
    
    is.Integer <- function(x, tol = .Machine$double.eps^0.5)  {
        abs(x - round(x)) < tol
    }
    
    time <- c(0, 0.5, 1, 1.5, 2, 2.5)
    numfor(time, 1)
    
    ## [1] ".0"  ".5"  "1.0" "1.5" "2.0" "2.5"
    

    override 做了什么:

    ## > numfor(1:10, 1)
    ##  [1] "1"  "2"  "3"  "4"  "5"  "6"  "7"  "8"  "9"  "10"
    
    ## > numfor(1:10, 1, override=TRUE)
    ##  [1] "1.0"  "2.0"  "3.0"  "4.0"  "5.0"  "6.0"  "7.0"  "8.0"  "9.0"  "10.0"
    

    【讨论】:

    • 谢谢。我试过了,但我可能做错了什么,我还是解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多