忘れないように記録しとこ

カバの樹

Vue.jsで範囲スライダー付きのヒストグラムを実装する「vue-histogram-slider」

vue-histogram-sliderとは

vue-histogram-sliderは、範囲をスライダーで指定することができるヒストグラムコンポーネントライブラリです。

グラフの色付けなどのカスタマイズはもちろん、キーボードによる操作やドラッグによる拡大表示をすることも可能です。

 

【動画サイズ:273KB】

 

環境

この記事は、以下の管理人の検証環境にて記事にしています。

 

ライブラリの取得

ライブラリを取得するには、npm, yarn, CDNのどれか一つを使用します。

npm

npm i vue-histogram-slider

yarn

yarn add vue-histogram-slider

CDN

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/vue-histogram-slider@0.3.8/dist/histogram-slider.css">
<script src="https://cdn.jsdelivr.net/npm/vue-histogram-slider@0.3.8/dist/histogram-slider.umd.min.js"></script>

gitリポジトリは以下から取得できます。

 

導入手順

管理人が行った、動作確認サンプルを実装するために、以下の手順でソースコードを導入していきます。
このサンプルでは、範囲をスライダーで指定することができるヒストグラムを実装します。

 

step.1 ライブラリの呼び出し

まずライブラリを呼び出す為に、以下の2通りのケースで呼び出します。

ES6等で実装する場合

import HistogramSlider from 'vue-histogram-slider';
import 'vue-histogram-slider/dist/histogram-slider.css';

UMDで実装する場合

const HistogramSlider = window['histogram-slider'];

 

step.2 メソッドを設定

今回のサンプル用にヒストグラムのデータをDateListに配列形式で設定します。
DateListには、momentで日付データをforでループしながら設定していきます。

上記で取得した  HistogramSlidercomponentsに取り込みます。

const DateList = [];
for(let i=120; i>=0; i--)
{
  DateList.push(moment().subtract(i, 'M').format());
}

new Vue({
  el: '#app',
  components: {
    HistogramSlider
  },
  data() {
    return {
      data: DateList.map(d => new Date(d).valueOf()),
      prettify: function(ts) {
        return new Date(ts).toLocaleDateString('ja', {
          year: 'numeric',
          month: 'short',
          day: 'numeric'
        })
      }
    }
  }, 
  methods: {
     finish(val) {
       console.log(val)
     }
  },
   mounted() {
     setTimeout(() => {
       this.$refs.hist.update({ from: this.data[20], to: this.data[69] })
     }, 2000)
   }
});

 

step.3 テンプレートを準備

<histogram-slider>を配置します。

オプションを使って色を設定したりできます。

サンプルはケバブケースで記載しています。

<div id="app">
  <histogram-slider
    style="margin: 200px auto"
    :width="600"
    :bar-height="100"
    :data="data"
    :prettify="prettify"
    :drag-interval="true"
    :force-edges="false"
    :colors="['#4facfe', '#00f2fe']"
  ></histogram-slider>
</div>
<!-- デモの日付取得用に使用する -->
<script src="https://cdn.jsdelivr.net/npm/moment@2.29.1/moment.min.js"></script>

 

サンプル

今回のソースを実際に触って確認できるようにデモを用意しました。

 

さいごに

範囲をスライダーで指定することができるヒストグラムコンポーネントライブラリでした。

今日はこの辺でー

 

  • B!