Как разместить текстовую подсказку на экране (ggplotly R) - PullRequest
0 голосов
/ 11 июля 2019

При создании сюжета 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

1 Ответ

0 голосов
/ 11 июля 2019

Если в строках нет пробелов, я бы использовал метод, предложенный Беном. Если есть пробелы, вы можете использовать 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"))

enter image description here

...