Это довольно специфическая проблема, поэтому я включил минимальный воспроизводимый пример ниже:
library(dplyr)
library(ggplot2)
library(magrittr)
library(plotly)
library(shiny)
example_data <- tibble(
target = factor(rep(LETTERS[1:5], each = 6)),
error = runif(30, -1, 1),
model = factor(rep(c('Model 1', 'Model 2'), times = 15)),
type = factor(rep(rep(c('Type 1', 'Type 2', 'Type 3'), each = 2), times = 5))
)
ui <- fluidPage(
plotlyOutput('plot')
)
server <- function(input, output) {
output$plot <- renderPlotly({
p <- example_data %>%
#mutate(label = paste0(model, ' (', type, ')')) %T>% # <- doesn't work
mutate(label = paste0(model, ' (Foo)')) %T>% # <- does work
{print(., n = Inf)} %>% # debugging
ggplot(aes(x = target, y = error, text = label)) +
geom_violin(aes(fill = target), show.legend = FALSE) +
geom_jitter(width = 0.1) +
coord_flip()
ggplotly(p, tooltip=c('text'))
})
}
shinyApp(ui, server)
По сути, я хочу добавить настраиваемую подсказку к выводу на графике в виде блестящего. Когда я пытаюсь сделать это, комбинируя два столбца моего набора данных вместе, я получаю следующую ошибку:
Warning in max(data$density) :
no non-missing arguments to max; returning -Inf
Warning: Error in order: argument 1 is not a vector
Я пытаюсь понять, как это связано с моим кодом. С другой стороны, если я объединю один из моих столбцов с фиктивной текстовой строкой (Foo), всплывающие подсказки будут отображаться без ошибок. Вы можете переключаться между этими двумя подходами, переключаясь между комментариями в строке 21/22.
Возможно, я упускаю что-то очевидное здесь, но я полностью озадачен тем, что происходит. У кого-нибудь есть идеи или это может быть ошибкой?