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

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

推薦する

HTML テーブルタグチュートリアル (26): セルタグ

<TD> タグの属性は、テーブル内のセルのプロパティを設定するために使用されます。表 &...

sqlalchemy に基づいて MySQL で追加、削除、変更、クエリ操作を実装する

需要シナリオ:上司は、クロ​​ーラーを使用してMySQLデータベースにデータを書き込んだり更新したり...

Reactの3つの主要属性におけるpropsの使用の詳細な説明

目次クラスコンポーネント機能コンポーネントプロパティは読み取り専用ですコンポーネント間通信前回は状態...

単語のグループ化シーケンスと複数フィールドのグループ化のための MySQL グループ方法

ここで商品テーブルを作成しました。その中のデータを見てみましょう。 mysql> 商品から *...

MySQL 8.0 で列を素早く追加する方法

序文: MySQL 8.0 では高速な列追加がサポートされ、数秒で大きなテーブルにフィールドを追加で...

CentOS 7 は Hadoop 2.10 の高可用性 (HA) をビルドします

この記事では、CentOS 7 で高可用性 Hadoop 2.10 クラスターを構築する方法を紹介し...

JavaScript における URL オブジェクトの素晴らしい使い方

目次序文解析パラメータURLパラメータを変更する要約する序文URLオブジェクトはページ側ではあまり使...

MySQL マスタースレーブ構成の学習ノート

● 新しいプロジェクトのセキュリティを確保するためにクラウド データを購入する予定でした。 Alib...

デザイン協会: なぜ間違った場所を探したのですか?

数日前、バスで仕事に行きました。バスのカードリーダーの実際の使用シーンを実際に見て、カードリーダーの...

Django+mysql の設定と簡単な操作データベースのサンプルコード

ステップ1: MySQLドライバをダウンロードするcmdは作成されたDjangoプロジェクトディレク...

MySQL5.7+ MySQL Workbenchのインストールと設定方法のグラフィックチュートリアル(MAC)

この記事では、主にMACオペレーティングシステムでのMySQL5.7とMySQLWorkbenchの...

Vue3.0 異なる解像度のコンピュータの適応操作

まず依存関係をインストールする必要があります npm i lib-flexible-computer...

HTML の div、td、p およびその他のコンテナーでの強制改行と非改行の実装

1. 改行を強制せず、省略記号で終了します。コードをコピーコードは次のとおりです。 <div ...

マインドマップを使って4つの側面からWeb標準の価値を議論する

このアイデアを改善し、より良い意見を得られることを期待して、議論を刺激するためにいくつかの値を大まか...

Robots.txtの詳細な紹介

Robots.txt はプレーンテキスト ファイルであり、Web サイト管理者は、ロボットによるアク...