Кнопки шкалы времени графика и поле даты выровнены по левому краю с графиком

Мне нужно руководство сделать мою диаграмму, как показано на прикрепленном скриншоте. Я использовал HighCharts для этой цели, но не смог найти подходящих опций или конфигураций для этого. Ниже приведен скриншот моего необходимого дизайна:

Я также прикрепляю ссылку скрипты к моей текущей реализации, которую я использовал для достижения этих требований к дизайну.

Моя скрипка

HTML:

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://code.highcharts.com/stock/highstock.js"></script>
<script src="https://code.highcharts.com/stock/modules/exporting.js"></script>
<div id="container" style="height: 400px; min-width: 310px"></div>

JavaScript:

Highcharts.stockChart('container', {
  chart: {
    spacingLeft: 200,
  },
  navigator: {
    enabled: false
  },
  scrollbar: {
    enabled: false
  },
  title : {
    text : 'Activity'
  },
  rangeSelector: {
    allButtonsEnabled: true,
    buttons: [{
      type: 'month',
      count: 3,
      text: 'Daily',
      dataGrouping: {
        forced: true,
        units: [['day', [1]]]
      }
    }, {
      type: 'year',
      count: 1,
      text: 'Weekly',
      dataGrouping: {
        forced: true,
        units: [['week', [1]]]
      }
    }, {
      type: 'all',
      text: 'Monthly',
      dataGrouping: {
        forced: true,
        units: [['month', [1]]]
      }
    }],
    buttonTheme: {
      width: 60
    },
    selected: 2
  },
  legend: {
    enable: true,
    align: 'left',
    verticalAlign: 'top',
    layout: 'vertical',
    x: 0,
    y: 100
  },
  xAxis: {
    type: 'datetime',
    dateTimeLabelFormats: {
      month: '%e. %b',
      year: '%b'
    }
  },
  series: [{
    name: 'Label 1',
    color: "#00aade",
    data: [[1501545600000, 5], [1504224000000,4], [1506816000000, 6],[1509494400000,5]]
  },
  {
    name: 'Label 2',
    color: "#8cc63e",
    data: [[1501545600000, 1], [1504224000000,0], [1506816000000, 2],[1509494400000,0]]
  }]
});

Будь добр, если кто-нибудь поможет мне сделать правильные настройки или стилизацию для достижения этой цели.

Благодарю.

2 ответа

Решение

Это самое близкое, что я мог получить

http://jsfiddle.net/0yax1bav/5/

Добавьте интервал слева:

chart: {
    spacingLeft: 300,
},

Переместить легенду влево:

legend: {
    enabled: true,
    align: 'left',
    verticalAlign: 'top',
    layout: 'vertical',
    x: -250,
    y: 150
},

Переместить заголовок влево:

title : {
    align: 'left',
    x: -280,
    text : 'Activity',
    floating: true
},

Переместить диапазон влево:

rangeSelector: {
    floating: true,
    x: 0,
    verticalAlign: 'middle',
    buttonPosition: {
        align: 'left',
        y: 20,
        x: -140
    },
    inputPosition: {
        align: 'left',
        y: 15,
        x: -280
    },
    ...

Отключить кнопки экспорта:

exporting:{
    buttons:{
        contextButton: {
            enabled: false
        }
    }
}

Highcharts.stockChart('container', {
  chart: {
    spacingLeft: 300,
  },
  legend: {
        enabled: true,
        align: 'left',
        verticalAlign: 'top',
        layout: 'vertical',
        x: -250,
        y: 150
    },
  navigator: {
    enabled: false
  },
  scrollbar: {
    enabled: false
  },
  exporting:{
    buttons:{
        contextButton: {
            enabled: false
        }
    }
  },
  title : {
    align: 'left',
    x: -280,
    text : 'Activity',
    floating: true
  },
  rangeSelector: {
    floating: true,
    x: 0,
    verticalAlign: 'middle',
    buttonPosition: {
            align: 'left',
            y: 20,
            x: -140
        },
    inputPosition: {
           align: 'left',
           y: 15,
           x: -280
    },
    allButtonsEnabled: true,
    buttons: [{
      type: 'month',
      count: 3,
      text: 'Daily',
      dataGrouping: {
        forced: true,
        units: [['day', [1]]]
      }
    }, {
      type: 'year',
      count: 1,
      text: 'Weekly',
      dataGrouping: {
        forced: true,
        units: [['week', [1]]]
      }
    }, {
      type: 'all',
      text: 'Monthly',
      dataGrouping: {
        forced: true,
        units: [['month', [1]]]
      }
    }],
    buttonTheme: {
      width: 60
    },
    selected: 2
  },
  xAxis: {
    type: 'datetime',
    dateTimeLabelFormats: {
      month: '%e. %b',
      year: '%b'
    }
  },
  series: [{
    name: 'Label 1',
    color: "#00aade",
    data: [[1501545600000, 5], [1504224000000,4], [1506816000000, 6],[1509494400000,5]]
  },
  {
    name: 'Label 2',
    color: "#8cc63e",
    data: [[1501545600000, 1], [1504224000000,0], [1506816000000, 2],[1509494400000,0]]
  }]
});

Я смог получить это далеко. Старшие диаграммы x,y немного сложны в использовании, но вам нужно было немного больше стилизовать buttonPosition,inputPosition, а также Title (см. скриншот), чтобы переместить их на правую сторону:

HTML:

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="https://code.highcharts.com/stock/highstock.js"></script>
<script src="https://code.highcharts.com/stock/modules/exporting.js">
</script>
<div id="container" style="height: 400px; min-width: 310px"></div>

JavaScript:

Highcharts.stockChart('container', {
  chart: {
    marginLeft: 300,
  },
  navigator: {
    enabled: false
  },
  scrollbar: {
    enabled: false
  },
  title : {
    text : 'Activity',
    x: -280
  },
  rangeSelector: {
    x: 0,
    verticalAlign: 'middle',
    buttonPosition: {
            align: 'left',
            y: 20,
            x: -140
        },
    inputPosition: {
           align: 'left',
           y: 15,
           x: -280
    },
    allButtonsEnabled: true,
    buttons: [{
      type: 'month',
      count: 3,
      text: 'Daily',
      dataGrouping: {
        forced: true,
        units: [['day', [1]]]
      }
    }, {
      type: 'year',
      count: 1,
      text: 'Weekly',
      dataGrouping: {
        forced: true,
        units: [['week', [1]]]
      }
    }, {
      type: 'all',
      text: 'Monthly',
      dataGrouping: {
        forced: true,
        units: [['month', [1]]]
      }
    }],
    buttonTheme: {
      width: 60
    },
    selected: 2
  },


  legend: {
        width: 100,
        align: 'left',
        x: 0, // = marginLeft - default spacingLeft
        y: -100,
        itemWidth: 100,
        borderWidth: 1
  },
  xAxis: {
    type: 'datetime',
    dateTimeLabelFormats: {
      month: '%e. %b',
      year: '%b'
    }
  },
  series: [{
    name: 'Label 1',
    color: "#00aade",
    data: [[1501545600000, 5], [1504224000000,4], [1506816000000, 6],[1509494400000,5]]
  },
  {
    name: 'Label 2',
    color: "#8cc63e",
    data: [[1501545600000, 1], [1504224000000,0], [1506816000000, 2],[1509494400000,0]]
  }]
});

Легенда, кажется, не рендерится - убедитесь, что ваши данные в правильном формате, а также попробуйте поиграть с x а также y,

Другие вопросы по тегам