шкала ggplot с преобразованием Йео-Джонсона - PullRequest
1 голос
/ 19 марта 2019

Я пытаюсь создать коробочную диаграмму с осью Y, преобразованной с помощью преобразования Йео-Джонсона.Ниже моего кода, чтобы попытаться это, но он возвращает ошибку, которая находится ниже кода.Я написал код, используя эту LINK .Для простоты я использую пример с набором данных Iris.Пожалуйста, дайте мне знать ваши мысли о том, как заставить это работать.

Код:

library(scales)
library(VGAM)
trans.yeo <- function(x) {
  yeo.johnson(x, inverse = FALSE, lambda = -1.000968)
}  

back.yeo <- function(x) {
  yeo.johnson(x, inverse = TRUE, lambda = -1.000968)
} 

scale.yeo <- function() {
  require(scales)
  trans_new("yeo", transform = trans.yeo, inverse = back.yeo)
}

iris.bxp <- ggplot(iris, aes(x=Species, y=Sepal.Length, fill=Species)) +
  geom_boxplot()+
  scale_y_continuous(trans = scale.yeo())
iris.bxp

(Конкретное преобразование с указанной лямбда-выражением может не иметь смысла для переменной Sepal.Length,но это имеет смысл для моих собственных данных. Это просто для того, чтобы привести полезный пример кода, который я создал)

Произошла ошибка:

Ошибка в ans [index] <-(y [index] * lambda [index] + 1) ^ (1 / lambda [index]) -: NA не допускаются при назначениях с подпиской </p>

Редактировать:

, если ясначала определите:

trans_yeo <- trans_new("yeo", transform = trans.yeo, inverse = back.yeo)

, а затем замените scale_y_continuous(trans = scale.yeo()) на coord_trans(y=trans_yeo), похоже, оно работает ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...