Что на самом деле делает autoplot.microbenchmark?

В соответствии с документами microbenchmark:::autoplot "Использует ggplot2 для получения более четкого графика микробизнечных таймингов".

Круто! Попробуйте пример кода:

library("ggplot2")
tm <- microbenchmark(rchisq(100, 0),
                     rchisq(100, 1),
                     rchisq(100, 2),
                     rchisq(100, 3),
                     rchisq(100, 5), times=1000L)
autoplot(tm)

microbenchmark plots

Я ничего не вижу о... мягких волнениях в документации, но мое лучшее предположение от этого ответа создателем функции заключается в том, что это похоже на сглаженная серия ящиков времени, затрачиваемого на бегство, с верхним и нижним квартилями, соединенными над телом формы. Может быть? Эти сюжеты выглядят слишком интересными, чтобы не узнать, что здесь происходит.

Что это за сюжет?

Ответ 1

Короткий ответ - скрипка:

Это полевая диаграмма с поворотным графиком плотности ядра с каждой стороны.


Чем более интересный (?) ответ. Когда вы вызываете функцию autoplot, вы на самом деле вызываете

## class(ts) is microbenchmark
autoplot.microbenchmark

Затем мы можем проверить фактический вызов функции через

R> getS3method("autoplot", "microbenchmark")
function (object, ..., log = TRUE, y_max = 1.05 * max(object$time)) 
{
    y_min <- 0
    object$ntime <- convert_to_unit(object$time, "t")
    plt <- ggplot(object, ggplot2::aes_string(x = "expr", y = "ntime"))
 ## Another ~6 lines or so after this

Ключевая строка + stat_ydensity(). Глядя на ?stat_ydensity, вы перейдите на страницу справки на скрипке.