Как создать график с точечной диаграммой? - R Highcharter - PullRequest
1 голос
/ 17 февраля 2020

Как я могу создать такой график старших диаграмм, как этот, используя пакет R highcharter?

Это простое число секторов (экземпляров) выше или ниже 0 и окрашенное в цвет, чтобы отразить значение.

Иногда это можно назвать точечным графиком (https://ggplot2.tidyverse.org/reference/geom_dotplot.html)?

изображение из (https://graphics.wsj.com/job-market-tracker/)

enter image description here

Некоторые образцы данных:

data = data.table(
  CJ(date = seq(as.IDate("2019-01-01"), as.IDate("2019-01-10"), by = "day"),
     group = seq(1,20))
)

data[, value := runif(n=200, -5,5)]

1 Ответ

1 голос
/ 17 февраля 2020

Это насколько я получил:

library(highcharter)
library(data.table)
library(dplyr)

data = data.table(
  CJ(x = seq(as.Date("2019-01-01"), as.Date("2019-01-10"), by = "day"),
     group = seq(1,20))
)

data[, value := round(runif(n=200, -5,5),4)]
data = data.table(data %>% mutate(cat=cut(value, breaks=quantile(data[value!=0]$value, seq(0,1,0.1)), labels=seq(1,10))))

colf = colorRampPalette(colors = c("red","yellow", "green"))
cols = colf(10)

data[, color := as.factor(cols[cat])]
data$x = datetime_to_timestamp(data$x)
data = data.table(data %>% group_by(x) %>% mutate(y = order(order(value))-sum(value<0,na.rm=T)))

data[, name := group]

highchart() %>%
  hc_chart(type = "scatter") %>%
  hc_xAxis(type = "datetime", dateTimeLabelFormats = list(day = '%d of %b')) %>%
  hc_tooltip(pointFormat = "Performance = <b>{point.value}</b> <br> Group = <b>{point.name}</b>") %>%
  hc_add_theme(hc_theme_flat(chart = list(backgroundColor = "#FFF"))) %>%
  hc_add_series(data, groupPadding=0)

enter image description here

Это также работает с большим количеством очков: enter image description here

...