高图:同一轴上的刻度间隔不同

时间:2018-09-12 09:02:19

标签: highcharts

我有一个由以下内容组成的系列:

  1. 每日价值,直到特定日期
  2. 从该日期起
  3. 6个月的值 向前

Some data example

我想专门增加图表第二部分的刻度间隔,以便我可以压缩数据。需要明确的是,我希望相同的空格表示图表左侧的一个月,右侧表示 6个月

Some data, as I want to see it

我不确定Highcharts是否允许...我认为可以有两种不同的方法:

  1. 创建两个具有两个不同轴的序列,并将一个轴设置为另一个轴
  2. 为同一轴设置不同的tickInterval。

使用tickPositions和tickPositioner我只能显示或多或少的滴答,但始终将它们保持在时间轴上。

这是我的代码:

Highcharts.chart('container', {
    chart: {
  zoomType: 'xy',
  animation: false
},
    title: {
    text: 'Some data'
},
    legend: {
        verticalAlign: 'bottom',
        borderWidth: 0
    },
    xAxis: {
        type : 'datetime',
        tickInterval: 30 * 24 * 3600 * 1000,
        labels: {
            useHTML: true,
            rotation: -90
        },
        dateTimeLabelFormats: { // don't display the dummy year
            month: '%b-%y',
            year: '%Y'
        },
        plotLines: [{
            color: 'gray',
            dashStyle: 'longdashdot',
            value: 1536278400000,
            width: 1,
            label: {
                text: 'Selected Date'
            }
        }]
    },
    yAxis: {
        title: {
            text: null
        },
        maxZoom: 0.1
    },
    series: jsonData

});

Here's a jsfiddle,其中包含我的原始数据的一部分。

哪种方法是实现这一目标的最佳方法?

1 个答案:

答案 0 :(得分:0)

Highcharts默认情况下不允许使用,但是您可以使用解决方法。您可以创建两个具有正确大小比例的xAxis和两个系列,如下面的示例所示:

bc <- read.csv("CSV name", header = T)  

bc$DATE = as.POSIXct(strptime(bc$DATE, format="%d-%m-%Y"))

bc$TIME = as.POSIXct(bc$TIME, format="%H-%M-%S"))

library(ggplot2); library(tidyr)

df_tidy <- df %>%

mutate(TIME = row.names %>% as.integer) %>%

select(-row.names) %>%

gather(series, value, -TIME)

ggplot(df_tidy, aes(TIME, value, group = series)) +
geom_line() +
facet_wrap(~series, scales = "free_y")

实时演示:https://jsfiddle.net/BlackLabel/zxd4j5tn/