Как создать полосу условных ошибок в ggplot - PullRequest
0 голосов
/ 06 мая 2020

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

d <- qplot(cyl, mpg, data=mtcars)
d + stat_summary(fun.ymin=min,fun.ymax=max,geom="errorbar")

Я хотел бы отображать вышеуказанные полосы ошибок, только если N> указанного значения. Есть способ сделать это?

1 Ответ

2 голосов
/ 06 мая 2020

Конечно, вы можете построить фабрики функций для аргументов fun.ymin и fun.ymax, которые дают значение только в том случае, если длина ввода превышает некоторое число. Единственным недостатком является то, что он должен возвращать какое-то значение, поэтому вы получите предупреждение об этом.


library(ggplot2)

nmax <- function(n) {
  n <- force(n)
  function(x) {
    if (length(x) >= n) {
      max(x)
    } else {
      NA_real_
    }
  }
}

nmin <- function(n) {
  n <- force(n)
  function(x) {
    if (length(x) >= n) {
      min(x)
    } else {
      NA_real_
    }
  }
}

d <- qplot(cyl, mpg, data=mtcars)
d + stat_summary(fun.ymin = nmin(8), fun.ymax = nmax(8), geom = "errorbar")
#> Warning: Removed 1 rows containing missing values (geom_errorbar).

Создано 2020-05- 06 с помощью пакета correx (v0.3.0)

Если вы обнаружите, что указание N два раза слишком громоздко / подвержено ошибкам, вы также можете создать обычные функции, которые принимают n как аргумент и передать fun.args:

nmax2 <- function(x, n) {
  if (length(x) >= n) {
    max(x)
  } else {
    NA_real_
  }
}

nmin2 <- function(x, n) {
  if (length(x) >= n) {
    min(x)
  } else {
    NA_real_
  }
}

d <- qplot(cyl, mpg, data=mtcars)
d + stat_summary(fun.ymin = nmin2, fun.ymax = nmax2, fun.args = list(n = 8), geom = "errorbar")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...