将自定义 HTML 标签与 str_wrap 一起使用,闪亮且有情节

Using custom HTML labels with str_wrap with shiny and plotly

我有一个闪亮的工具提示,它显示了一个长字符串的全文。我能够在工具提示的文本参数字段中使用 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)

但是,我还想包括一些其他标签,例如 modelmpg,以及一些自定义样式(即加粗列标题),如下所示:

任何人都可以提供如何执行此操作的解决方案 - 我知道如何执行 w/o 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 = 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)