Создайте коробочную диаграмму в старшей диаграмме с объектом даты на оси х - PullRequest
0 голосов
/ 13 апреля 2019

Я пытаюсь создать блокпост в старшей диаграмме, чтобы включить его в блестящее приложение вместе с другим графиком, который у меня уже есть.

Проблема в том, что блокпост, насколько я могу судить, ведет себя не так, как другие графики, и когда вы отображаете дату на ось x, она обрабатывается как символьная строка, это означает: график отображает всю дата ex: "2018-04-01" не Apr'18, как на других графиках.

Здесь я помещу небольшой пример того, что я сделал

# Packages
library(tidyverse)
library(lubridate)
library(highcharter)
library(magrittr)
library(plotly)

# Data
stocks <- data.frame(
  time = rep(as.Date('2009-01-01') + month(1:12), times = 10),
  stock_price = rnorm(120, 0, 1)
) 
# line plot
stocks %>%
  group_by(time) %>%
  summarise(mean_price = mean(stock_price)) %>%
  hchart(.,  
         type = "line", 
         hcaes(x = "time", 
               y = "mean_price"))
# Box plot first try
# hchart boxplot
stocks %$% 
  hcboxplot(x = stock_price, time) %>%
  hc_chart(type = "column")

После этой первой попытки я пытаюсь создать сокращенную дату и сопоставить ее с осью X следующим образом, но поля отображаются в алфавитном порядке, а не в хронологическом порядке

# hchart boxplot
stocks %>%
  mutate(month = month(time, label = T),
         year = str_extract(as.character(year(time)), "..$"),
         time2 = paste(month, year, sep = "'")) %$%
  hcboxplot(x = stock_price, time2) %>%         
  hc_chart(type = "column")

Мой желаемый вывод - это график с осью X, подобный линейному графику или как вывод графика,

stocks %>%
  group_by(time) %>%
  plot_ly(x = ~time, y = ~stock_price, type = "box") 

1 Ответ

1 голос
/ 13 апреля 2019

С помощью arrange() и fct_inorder(), я считаю, я достиг желаемого результата:

stocks %>%
  arrange(time) %>%
  mutate(
    month = month(time, label = T),
    year  = str_extract(as.character(year(time)), "..$"),
    time2 = fct_inorder(paste(month, year, sep = "'"))
  ) %$%
  hcboxplot(x = stock_price, time2) %>%
  hc_chart(type = "column")
...