Ошибка с (gglayout $ yaxis, if (идентичный (tickmode, auto)) ticktext else tickvals) [[1]]: нижний индекс за пределами

Я пытаюсь использовать эту библиотеку: https://github.com/swarchal/platetools и изменить немного кода, чтобы я мог создавать интерактивные фотографии планшетов

что я сделал, так это добавил к их функции пластины следующее:

plt384_alt<- function (platemap, size = 5, shape = 22) 
{
  shape <- parse_shape(shape)
  ggplotly(ggplot(data = platemap, aes_string(x = "Column", y = "Row")) + 
    geom_point(data = expand.grid(seq(1, 24), seq(1, 16)), 
               aes_string(x = "Var1", y = "Var2"), color = "grey90", 
               fill = "white", shape = shape, size = size - 2, alpha = 0.1) + 
    geom_point(aes_string(fill = "values"), colour = "gray20", 
               shape = shape, size = size) + coord_fixed(ratio = (24.5/24)/(16.5/16), 
                xlim = c(0.5, 24.5), ylim = c(0.5, 16.5)) + scale_y_reverse(breaks = seq(1,16), labels = LETTERS[1:16]) + 
      scale_x_continuous(position = "top", breaks = seq(1, 24)) + xlab("") + ylab(""))
}

и переходят к их функции, в которой они вызывают

raw_map_alt <- function (data, well, plate = 96, ...) 
{
  platemap <- plate_map(data, well)
  if (plate == 96) {
    plt <- plt96(platemap, ...) + theme_bw()
  }
  else if (plate == 384) {
    plt <- plt384_alt(platemap, ...) + theme_bw()
  }
  else if (plate == 1536L) {
    plt <- plt1536(platemap, ...) + theme_bw()
  }
  else {
    stop("Invalid argument for 'plate'. \nOption: 96, 384 or 1536", 
         call. = FALSE)
  }
  return(plt)
}

Но когда я вызываю эту функцию

raw_map_alt(data = df384$vals,
            well = df384$wells,
            plate = 384)

Я получаю следующую ошибку

Ошибка с (gglayout $ yaxis, if (идентичный (tickmode, "auto")) ticktext else tickvals) [[1]]: нижний индекс вне пределов Дополнительно: Предупреждение: в L ​​$ marker $ color [idx] ‹- aes2plotly (данные, параметры, "заполнить") [idx]:

Ошибка с (gglayout $ yaxis, if (идентичный (tickmode, "auto")) ticktext else tickvals) [[1]]: индекс за пределами

Может ли кто-нибудь помочь мне объяснить, что происходит?

фиктивные данные

wells <- num_to_well(1:384, plate = 384)
vals <- rnorm(length(wells))
df384 <- data.frame(wells, vals)

raw_map_alt(data = df384$vals,
            well = df384$wells,
            plate = 384)

также опубликовать функцию parse_shape, выполненную в platetool

parse_shape <- function(shape) {
    if (is.numeric(shape)) {
        return(shape)
    } else if (is.character(shape)) {
        # R is the worst
        # why is it `tolower` and not `to.lower` or `toLower` ????
        if (tolower(shape) == "circle") {
            return(21L)
        } else if (tolower(shape) == "round") {
            return(21L)
        } else if (tolower(shape) == "square") {
            return(22L)
        } else {
            stop("invalid parameter for shape")
        }
    } else {stop("invalid parameter for shape")}
}

Спасибо


person Norman Kuo    schedule 02.04.2020    source источник
comment
Можете ли вы предоставить фиктивные данные для тестирования?   -  person MayaGans    schedule 03.04.2020
comment
да, опубликовать в редактировании   -  person Norman Kuo    schedule 03.04.2020


Ответы (1)


В функции raw_map первая строка - это check_plate_input(well, plate). Эта строка отсутствует в вашей функции raw_map_alt. Это могло быть источником вашей ошибки.

person YBS    schedule 20.06.2020