Есть ли способ использовать две серии (или какую-то группу) в WordCloud высокого чартера? - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь создать облако слов с пакетом Highcharter R (на основе библиотеки Highcharts), чтобы отображать две категории настроений (положительное и отрицательное) в одном слове.

Дело в том, что я тоже хочу показать легенду. Моя проблема в том, что когда я показываю легенду, слова не совпадают. И когда мне нужно было правильно отобразить данные, я не смог показать легенду.

Самый простой случай, показывающий мою проблему, - это следующий случай:

library(tidyverse)
library(highcharter)

positive <-
  c(
    "tranquilo",
    "tranquila",
    "nova"  ,
    "burocratico" ,
    "bom"      ,
    "assertivo"   ,
    "rapido"    ,
    "transparente"
  )

negative <-
  c(
    "trabalhoso" ,
    "conduzida" ,
    "passa"  ,
    "congelada" ,
    "pessima"  ,
    "moroso"   ,
    "pouco",
    "opinar"  ,
    "passado"  ,
    "afastado"
  )

df <- list(
  tibble("term" = positive,
         "sentiment" = "positive"),
  tibble("term" = negative,
         "sentiment" = "negative")
) %>% bind_rows()

df %>%
  hchart(
    "wordcloud",
    hcaes(name = "term", group = "sentiment"),
    showInLegend = TRUE,
    colorByPoint = FALSE
  ) %>%
  hc_colors(c("#E0362C", "#189D3E"))

Результат это:

Если я изменю параметр "group" на "color" hcaes(name = "term", color = "sentiment"), то получаю: enter image description here

Заранее спасибо. Владемир.

PS: Я думаю, что решение в JS также может помочь мне.

1 Ответ

2 голосов
/ 23 марта 2020

Невозможно расположить слова в 2 отдельные серии. Вы можете использовать один ряд wordcloud, где каждая точка имеет индекс seriesId. Теперь вы можете использовать еще 2 серии поддельных строк (они не могут быть типами wordcloud), и вы можете написать собственный legendItemClick журнал событий c на них. Всякий раз, когда пользователь нажимает на элемент легенды, алгоритм просматривает все слова и «прячет» нужные слова.

Этот пример можно посмотреть здесь: https://jsfiddle.net/BlackLabel/7tq01sn5/

Дайте мне знать, что вы думаете и подходит ли вам это решение. При переписывании на R вы можете использовать функцию JS ("") для преобразования кода функции JavaScript в R.

...