如何使文本工具提示适合屏幕(ggplotly R)

How to fit a text tooltip in the screen (ggplotly R)

当生成带有包含长描述的工具提示的 plotly geom_point() 绘图时,包的标准是在一行中显示文本。问题是它不适合屏幕。如何以一种可以阅读的方式打破这条线?

 library(tidyverse)
 library(plotly)


bd <- data.frame(Freq = c(1, 2, 3),
                     Criticality = c("A", "B", "C"),
                     Status = c("alpha", "beta", "alpha"),
                     Plant = c(1, 2, 1),
                     Description = c("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
                                      "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy",
                                      "zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz"))

    g <- bd %>% 
       ggplot(aes(x = Freq, y = Criticality)) +
      geom_point(aes(shape = Status, col = Plant, text = Description)) +
      geom_jitter(aes(shape = Status, col = Plant, text = Description)) +
      guides(size = FALSE)

    ggplotly(g, tooltip = c("Description"))

目前,我收到以下错误消息,但不会产生任何问题。

Warning: Ignoring unknown aesthetics: text

如果字符串没有空格,我会使用 Ben 建议的方法。如果有空格,可以用str_wrap()

library(tidyverse)
library(plotly)

bd <-
  tibble(
    Freq = c(1, 2, 3),
    Criticality = c("A", "B", "C"),
    Status = c("alpha", "beta", "alpha"),
    Plant = c(1, 2, 1),
    Description = paste(sentences[1:3], collapse = " "),
    tooltip = str_wrap(Description, 30)
  )

g <- bd %>% 
  ggplot(aes(x = Freq, y = Criticality)) +
  geom_point(aes(shape = Status, col = Plant, label = tooltip)) +
  geom_jitter(aes(shape = Status, col = Plant, label = tooltip)) +
  guides(size = FALSE)

ggplotly(g, tooltip = c("tooltip"))