Echarts は 1 つのグラフ内で異なる X 軸を切り替える機能を実装します (サンプル コード)

Echarts は 1 つのグラフ内で異なる X 軸を切り替える機能を実装します (サンプル コード)

レンダリング

下の画像のような効果を実現したい場合は、読み続けてアニメーション画像に直接進んでください。

画像の説明を追加してください

方法

プロジェクトでは多くのデータ チャートを表示する必要があったため、参照用に各チャートを Vue コンポーネントにカプセル化することにしました。
完全なコードは次のとおりです。引用する場合、データベースからデータを取得するときは、独自のデータベースに変更し、必要なオブジェクトを定義して、設定した配列に追加する必要があることに注意してください。

<テンプレート>
  <div>
    <div id="main" style="height:350px;width:100%"></div>
  </div>
</テンプレート>
<スクリプト>
'echarts' から echarts をインポートします
エクスポートデフォルト{
 データ() {
    戻る {
      回答:[],
      // dayX: [], // 日の X 軸 weekX: [], // 週の X 軸 monthX: [], // 月の X 軸 yearX: [], // 年の X 軸 timeX: [], // 任意の期間の X 軸 dataY: [] // Y 軸 }
  },
 作成された() {
    this.fetchData()
  },
  
メソッド: {
//データベース内のデータを取得する fetchData() {
    this.axios({
          メソッド: 'GET'、
          url: 'http://localhost:8080/xxxx/xxxx' }).then(function(resp) {
          console.log("酸素 ===>",resp.data)
          let num = resp.data.length //配列の長さを取得します for (let i = 0; i <num; i++) {
            //オブジェクトを作成する let arr = {}
            arr.timeX = resp.data[i].chkDate.slice(5, 10)
            arr.timeY = resp.data[i].oxgn飽和度
            vm.ans.push(arr)

          }

        })
     },
       init(データX, データY) {
      this.myChart = echarts.init(document.getElementById('main'))

      オプション = {
        伝説: {
          アイコン: 'スタック'、
          // データ: ['その日', 'その月', 'その年'],
          データ: ['今週'、'今月'、'今年'、'選択した期間']、
          selectedMode: 'single', // 単一選択 selected: {
            今週:本当、
            現在の月: false、
            現在の年: false、
            選択された期間: false
          }
        },
        ツールチップ: {
          トリガー: '軸'、
          軸ポインタ:
            タイプ: 'クロス'
          },
          //カスタム表示ラベルフォーマッタ:function(params) {
            params[0].name + '<br>血中酸素: '+params[0].data+' %' を返します
          }
        },
        // ツールバーツールボックス: {
          特徴:
            saveAsImage: {} //折れ線グラフのスクリーンショットを撮って保存できます。}
        },
        グリッド: {
          left: 10, //コンポーネントとコンテナの左側の間の距離 right: 10,
          トップ: 30,
          下: 20,
          ラベルを含む: true
        },

        dataZoom: [ // マウスを使用して折れ線グラフの拡大と縮小を制御します {
            表示: true、
            タイプ: 'inside'、
            フィルターモード: 'なし'、
            x軸インデックス: [0]

          },
          {
            表示: true、
            タイプ: 'inside'、
            フィルターモード: 'なし'、
            y軸インデックス: [0]

          }
        ]、
        x軸:
          タイプ: 'カテゴリ',
          ミニ間隔: 3,
          境界ギャップ: false、
          軸目盛り: {
            表示:偽
          },
          分割行: {
            // X軸の区切り線のスタイル show: true,
            線のスタイル:
              色: ['#f3f0f0'],
              幅: 1,
              タイプ: 'ソリッド'
            }
          },
          データ: データX
        },
        y軸: [
          {
            名前:「血中酸素トレンドチャート」、
            タイプ: '値',
            分割行: {
              // Y軸セパレータラインスタイル show: true,
              線のスタイル: {
                色: ['#f3f0f0'],
                幅: 1,
                タイプ: 'ソリッド'
              }
            }
          }
        ]、
        シリーズ: データY

      }
      
  		this.myChart.on('凡例選択が変更されました', obj => {
        var オプション = this.myChart.getOption()
        //ここで切り替えるX軸を選択し、Y値を切り替えます if (obj.name == 'this week'){
          options.xAxis[0].data = this.weekX
        }そうでない場合 (obj.name == '今月'){
          options.xAxis[0].data = this.monthX
        }そうでない場合 (obj.name == 'その年'){
          options.xAxis[0].data = this.yearX
        }else if (obj.name == '選択された期間'){
          options.xAxis[0].data = this.timeX
        }

        this.myChart.setOption(オプション、true)
      })

      // 指定した構成項目とデータを使用してグラフを表示します。
      this.myChart.setOption(オプション)

			
  },
    マウント() {

    タイムアウトを設定する(() => {
      this.$nextTick(() => {

        this.monthX = (this.res.map(item => item.monthX)).filter(Boolean) // 未定義、NaN、null、空の文字列を除外 this.weekX = (this.res.map(item => item.weekX)).filter(Boolean) // 未定義、NaN、null、空の文字列を除外 this.yearX = (this.res.map(item => item.yearX)).filter(Boolean) // 未定義、NaN、null、空の文字列を除外 this.timeX = (this.ans.map(item => item.timeX)).filter(Boolean) // 未定義、NaN、null、空の文字列を除外 // dataY に値を割り当てます。1 つの X 軸を複数の Y 値に対応させたい場合は、{} を追加できます。
        this.dataY.push({
          名前: '今月'、
          type: 'line', // 直線
          アイテムスタイル: {
            普通: {
              色: '#2E2E2E',
              線のスタイル:
                色: '#2E2E2E',
                幅: 2
              }
            }
          },
          データ: this.res.map(item => item.monthY)
        })

        this.dataY.push({ //ここで折れ線の表示方法と色をカスタマイズできます。名前: '今週'、
          タイプ: 'line'、
          アイテムスタイル: {
            普通: {
              色: '#FF0000',
              線のスタイル:
                色: '#FF0000',
                幅: 2
              }
            }
          },
          データ: this.res.map(item => item.weekY)
        })


        this.dataY.push({ //ここで折れ線の表示方法と色をカスタマイズできます name: '年', //これはlengenと一致している必要があります type: 'line',
          アイテムスタイル: {
            普通: {
              色: '#0404B4',
              線のスタイル: {
                色: '#0404B4',
                幅: 2
              }
            }
          },
          データ: this.res.map(item => item.yearY)
        })

        this.dataY.push({ //ここで折れ線の表示方法と色をカスタマイズできます。name: '選択された期間'、
          タイプ: 'line'、
          アイテムスタイル: {
            普通: {
              色: '#DF01D7',
              線のスタイル:
                色: '#DF01D7',
                幅: 2
              }
            }
          },
          データ: this.ans.map(item => item.timeY)
        })

        this.init(this.weekX, this.dataY) // データ表示を初期化 window.onresize = this.myChart.resize // ウィンドウサイズアイコンを適応 })
    }, 1000)
  }
}
</スクリプト>

完了、完了

Echarts の 1 つのグラフで異なる X 軸を切り替える方法についての記事はこれで終わりです。Echarts の 1 つのグラフで異なる X 軸を切り替える方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • div が動的に切り替わったときに Echarts チャートが表示されない問題の解決方法
  • Vueタブ切り替え、echartstチャートの幅が100pxしかない問題を解決
  • echartsは、マップタイミングの切り替え散布点とマルチチャートカスケードリンクを実装します。詳細な説明
  • Bootstrapタブ(Tab)プラグインを切り替えるとechartsが表示されない問題の解決方法
  • echarts の同じページ上で 4 つのチャートを切り替える js データ操作方法の例

<<:  secure_file_priv nullの問題を解決する

>>:  ウェブサイトデザインに関するヒント

推薦する

CSS3 フレックスレイアウトを使用して要素を均等に分散するサンプルコード

この記事では主に、CSS3 フレックスレイアウトを使用して要素を均等に配置する方法を紹介します。自分...

MySQL カーソルの概念と使用法の詳細な説明

この記事では、例を使用して MySQL カーソルの概念と使用方法を説明します。ご参考までに、詳細は以...

Docker で Kong API Gateway をインストールして使用する詳細なチュートリアル

1 はじめにKong は単純な製品ではありません。この記事で言及されている Kong は主に Kon...

Dockeにredisをインストールする方法

1. redisイメージを検索する docker 検索 redis 2. Redisイメージをダウン...

MySQLでインデックスエラーが発生する状況について簡単に説明します

以下に、トレーニング機関からのヒントと私自身の要約をいくつか示します。以下のインデックスの内容を説明...

docker-compose で Jenkins をインストールする際の実践的なメモ

ディレクトリを作成する cd /usr/local/docker/ jenkins-docker を...

CSS 標準: vertical-align プロパティ

<br />原文: http://www.mikkolee.com/13私は最近、ver...

JS配列重複排除の詳細

目次1 テストケース2 JS配列重複排除4種類2.1 要素の比較2.1.1 二重層 for ループ比...

Django 2.2 を MySQL データベースに接続する方法

1. プロジェクトの実行時に報告されるエラー情報は次のとおりです。 ファイル "/home...

MySQL ストアド プロシージャの概念、原則、一般的な使用法の詳細な説明

この記事では、例を使用して、MySQL ストアド プロシージャの概念、原則、および一般的な使用法につ...

15 分で学べる並列アーティファクト GNU Parallel 入門ガイド

GNU Parallel は、1 台以上のコンピューター上で計算タスクを並列に実行するためのシェル ...

JSのバイナリファミリーについての簡単な説明

目次概要ブロブBlob の動作BLOB ダウンロード ファイルブロブ画像のローカル表示BLOB ファ...

CSS を使用してデータ ホットスポット効果を実現する方法

効果は以下のとおりです。 分析する1. ここでは、点を囲む 3 つの円がズームアニメーションを実行し...

Flash での HTML と CSS の適用

Flash での HTML と CSS の適用:同僚の Den が Flash で HTML と C...

Navicat for SQLite で中国語データを CSV にインポートする方法

この記事では、参考までに、csv中国語データをNavicat for SQLiteにインポートする具...