Есть ли способ использовать две серии (или какую-то группу) в highcharter wordcloud?

Я пытаюсь создать облако слов с пакетом 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"))

Результат:

Если я изменю параметр «группа» на «цвет» hcaes(name = "term", color = "sentiment"), то я получу следующее: введите здесь описание изображения

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

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


person Wlademir Ribeiro Prates    schedule 20.03.2020    source источник


Ответы (2)


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

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

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

person raf18seb    schedule 23.03.2020

Наткнулся на это, так как у меня была такая же проблема.

Может быть проблема с highcharter, хотя она была решена с помощью:

hcaes(name = "term", color = "sentiment")

то есть «цвет», а не «цвет»

person user10022403    schedule 02.08.2021