R highcharter - Две гистограммы на одном графике с разными осями X

Я пытаюсь сделать следующее:

У меня есть два набора данных о моей компании. В первом, скажем, входят 20 самых растущих продавцов. Во втором - 20 худших проигравших продавцов. Итак, это примерно так:

growing_seller <- c("a","b","c","d","e","f","g","h","i","h")
sales_yoy_growing <- c(100000,90000,75000,50000,37500,21000,15000,12000,10000,8000)
top_growing <- data.frame(growing_seller,sales_yoy_growing)


losing_seller <- c("i","j","k","l","m","n","o","p","q","r")
sales_yoy_losing <- c(-90000,-75000,-50000,-37500,-21000,-15000,-12000,-10000,-8000,-5000)
bottom_losing <- data.frame(losing_seller,sales_yoy_losing)

Я пытаюсь построить обе диаграммы на одном и том же графике, используя РАЗНЫЕ категории, соответствующие имени продавцов. Итак, что у меня есть до сих пор:

library(highcharter)

growing_seller <- c("a","b","c","d","e","f","g","h","i","h")
sales_yoy_growing <- c(100000,90000,75000,50000,37500,21000,15000,12000,10000,8000)
top_growing <- data.frame(growing_seller,sales_yoy_growing)

losing_seller <- c("i","j","k","l","m","n","o","p","q","r")
sales_yoy_losing <- c(-90000,-75000,-50000,-37500,-21000,-15000,-12000,-10000,-8000,-5000)
bottom_losing <- data.frame(losing_seller,sales_yoy_losing)

highchart() %>%
  hc_add_series(
    data = top_growing$sales_yoy_growing,
    type = "column",
    grouping = FALSE
  ) %>%

  hc_add_series(
    data = bottom_losing$sales_yoy_losing,
    type = "column"
  )

Вот чего я хочу достичь графически: Пример диаграммы
Теперь я хотел бы иметь разные массивы категорий для каждой независимой оси x: что-то вроде возможности иметь «два элемента управления hc_xAxis», где я мог бы указать для каждой построенной серии свои собственные категории.
Моя конечная цель - узнать имя продавца при анализе каждого столбца.

Надеюсь, я был достаточно ясен :)
Спасибо


person Lorenzo    schedule 11.05.2020    source источник
comment
Извините, но я не уверен, хорошо ли я вас понял. Вы пытаетесь достичь чего-то подобного? jsfiddle.net/BlackLabel/ot8c3j1g или что-то в этом роде? Сначала jsfiddle.net/BlackLabel/o0e37fjx, давайте загрузим его в JavaScript, а потом я помогу вы переписали его в R.   -  person raf18seb    schedule 12.05.2020
comment
@ raf18seb почти (спасибо за поддержку)! Ваш пример работает отлично, поскольку, когда вы перемещаете курсор на каждый столбец, можно увидеть значение и категорию позади. Но вторая серия данных (с отрицательными значениями) должна быть точно под первой серией данных (как в примере скриншота, который я привел в сообщении), а не добавляться. Итак, представьте, что сдвинули Серию 2 прямо под Серию 1. Надеюсь, вы были немного яснее :)   -  person Lorenzo    schedule 12.05.2020
comment
Итак, вы не хотите устанавливать отдельные категории на оси x, но вы просто хотите добавить имя во всплывающую подсказку, верно? Что-то вроде этого? jsfiddle.net/BlackLabel/jbnf7k56   -  person raf18seb    schedule 12.05.2020
comment
@ raf18seb именно так! :)   -  person Lorenzo    schedule 12.05.2020
comment
@ raf18seb есть ли у вас какие-нибудь идеи, как этого добиться в Shiny?   -  person Lorenzo    schedule 13.05.2020
comment
Да пишу ответ;)   -  person raf18seb    schedule 13.05.2020


Ответы (1)


Highcharts по умолчанию отображает имя точки во всплывающей подсказке. Вам просто нужно указать значение name в ваших данных. Сделать это можно так: top_growing <- data.frame(name = growing_seller, y = sales_yoy_growing)

Это весь код:

library(highcharter)

growing_seller <- c("a","b","c","d","e","f","g","h","i","h")
sales_yoy_growing <- c(100000,90000,75000,50000,37500,21000,15000,12000,10000,8000)
top_growing <- data.frame(name = growing_seller, y = sales_yoy_growing)

losing_seller <- c("i","j","k","l","m","n","o","p","q","r")
sales_yoy_losing <- c(-90000,-75000,-50000,-37500,-21000,-15000,-12000,-10000,-8000,-5000)
bottom_losing <- data.frame(name = losing_seller, y = sales_yoy_losing)

highchart() %>%
  hc_add_series(
    data = top_growing,
    type = "column",
    grouping = FALSE
  ) %>%

  hc_add_series(
    data = bottom_losing,
    type = "column"
  )
person raf18seb    schedule 13.05.2020
comment
Пожалуйста;) Буду признателен, если вы тоже проголосуете за него;) - person raf18seb; 13.05.2020