У меня есть блестящая подсказка, показывающая полный текст длинной строки. Я могу показать весь этот текст удобным способом, используя функцию str_wrap в поле текстового аргумента для всплывающей подсказки.

library(shiny)
library(tidyverse)
library(plotly)
library(stringi)

dat <- mtcars %>% 
  rownames_to_column(var = "model")
dat[["lorem"]] <- rep(stri_rand_lipsum(n_paragraphs = 1), 32)

ui <- fluidPage(
  plotlyOutput("plot1")
)

server <- function(input, output, session) {
  output$plot1 <- renderPlotly({
    p1 <- dat %>% 
      ggplot(aes(x = wt, y = mpg,
                 text = str_wrap(lorem, width = 80))) +
      geom_point()
    ggplotly(p1, tooltip = "text")
  })
}

shinyApp(ui, server)

Тем не менее, я хотел бы также включить некоторые другие ярлыки, например model и mpg, с некоторым пользовательским стилем (т. Е. Выделением заголовков столбцов жирным шрифтом), в строках:

enter image description here

Кто-нибудь может предложить решение, как это сделать - я знаю, как это сделать без функции str_wrap, но не могу понять, как это сделать без нее.

0
DJC 9 Фев 2021 в 17:55

1 ответ

Лучший ответ

Попробуй это:

library(shiny)
library(tidyverse)
library(plotly)
library(stringi)

dat <- mtcars %>% 
  rownames_to_column(var = "model")
dat[["lorem"]] <- rep(stri_rand_lipsum(n_paragraphs = 1), 32)

ui <- fluidPage(
  plotlyOutput("plot1")
)

server <- function(input, output, session) {
  output$plot1 <- renderPlotly({
    p1 <- dat %>% 
      ggplot(aes(x = wt, y = mpg,
                 text = paste0("<b>Model:</b> ", model, "<br>",
                               "<b>MPG:</b> ", mpg, "<br>",
                               str_wrap(paste0("<b>Text:</b> ", lorem), width = 80)
                               ))) +
      geom_point()
    ggplotly(p1, tooltip = "text")
  })
}

shinyApp(ui, server)

enter image description here

1
stefan 9 Фев 2021 в 20:50