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の問題を解決する

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

推薦する

Nginx+ModSecurity セキュリティモジュールの導入

目次1. ダウンロード2. 展開1.Nginxのデプロイメント2. ModSecurityの展開3....

CSS3でシャトル星空のアニメーションを実現

結果: html <canvas id="スターフィールド"><...

MySQL カーディナリティ統計の簡単な分析

1. カーディナリティとは何ですか?カーディナリティとは、MySQL テーブルの列内の異なる値の数を...

MySQL の DDL と DML についての簡単な説明

目次序文1. DDL 1.1 データベース操作1.2 データテーブルの操作1.3 一般的なデータ型1...

JS関数の呼び出し、適用、バインドの超詳細な方法

目次JS 関数呼び出し、適用、バインドメソッド1. call() メソッド1. call() メソッ...

Vue3 コンパイルプロセス - ソースコード分析

序文: Vue3 がリリースされてからかなり経ちますが、最近、会社のプロジェクトでVue3 + Ty...

MySQLの7種類のログの概要

MySQL には次のログ ファイルがあります。 1: 再実行ログ2: ロールバックログ(元に戻すログ...

シェルで文字列内のスペースや指定された文字を削除する方法

インターネット上には、正しい方法であっても、使用しても正しい結果が得られない方法が数多くあります。正...

Eclipse/Tomcat でホットデプロイメントとホットスタートを実装する方法

1. ホット デプロイメント: コンテナの実行中にプロジェクト全体を再デプロイすることを意味します。...

MySQLデータベースのマスタースレーブ同期の実際のプロセスの詳細な説明

目次インストール環境の説明MySQLデータベースサービスをインストールするメインライブラリを構成する...

純粋な CSS3 で美しい入力ボックスアニメーションスタイルライブラリを実現 (テキスト入力愛)

純粋な CSS3 で実装された美しい入力ボックス アニメーション スタイル ライブラリを共有します ...

ul リスト タグ デザイン ウェブ ページ 複数列レイアウト

数日前、CSS で 3 列レイアウトを書いていたときに、突然この方法を思いつきました。このアイデアは...

CentOS8.0 で FTP サーバーをインストールして設定する方法

CentOS8.0-1905 のリリース後、FTP サーバーを CentOS の新しいバージョンに移...

乱数、文字列、日付、検証コード、UUIDを生成するMySQLメソッド

目次乱数を生成する0から1までの乱数を生成する指定された範囲内で乱数を生成します6桁のモバイル認証コ...

MySQLは現在の日付と時刻を取得する関数

現在の日付 + 時刻 (日付 + 時刻) を取得する関数: now() mysql> now(...