Vueはechartsに基づいて3次元の縦棒グラフを実装します

Vueはechartsに基づいて3次元の縦棒グラフを実装します

3次元縦棒グラフは、正面、右側、上部の3つの部分で構成されています。描画するときは、正面をグラフィックとして、右側と上部をグラフィックとして描画し、echatsに登録し、オプションのシリーズのrenderItemでレンダリングする必要があります。

コードは次のとおりです。

(1)グラフィックの登録と描画

レジストリ(){
      MyCubeRect = this.$echarts.graphic.extendShape({
        形:
          x: 0,
          y: 0,
          幅: 20,
          z幅: 8,
          高さ: 4
        },
        ビルドパス: 関数 (ctx, シェイプ) {
          定数api = shape.api
          定数 xAxisPoint = api.coord([shape.xValue, 0])
          定数 p0 = [形状.x, 形状.y]
          定数 p1 = [shape.x - shape.width / 2, shape.y]
          定数 p4 = [shape.x + shape.width / 2, shape.y]
          定数p2 = [shape.x - shape.width / 2, xAxisPoint[1]]
          定数p3 = [shape.x + shape.width / 2, xAxisPoint[1]]

          ctx.moveTo(p0[0], p0[1])
          ctx.lineTo(p1[0], p1[1])
          ctx.lineTo(p2[0], p2[1])
          ctx.lineTo(p3[0], p3[1])
          ctx.lineTo(p4[0], p4[1])
          ctx.lineTo(p0[0], p0[1])
          ctx.closePath()
        }
      })
      MyCubeShadow = this.$echarts.graphic.extendShape({
        形:
          x: 0,
          y: 0,
          幅: 20,
          z幅: 8,
          高さ: 4
        },
        ビルドパス: 関数 (ctx, シェイプ) {
          定数api = shape.api
          定数 xAxisPoint = api.coord([shape.xValue, 0])
          定数 p1 = [shape.x - shape.width / 2, shape.y]
          定数 p4 = [shape.x + shape.width / 2, shape.y]
          定数 p6 = [shape.x + shape.width / 2 + shape.zWidth, shape.y - shape.zHeight]
          定数 p7 = [shape.x - shape.width / 2 + shape.zWidth, shape.y - shape.zHeight]
          定数p3 = [shape.x + shape.width / 2, xAxisPoint[1]]
          定数 p5 = [shape.x + shape.width / 2 + shape.zWidth, xAxisPoint[1] - shape.zHeight]

          ctx.moveTo(p4[0], p4[1])
          ctx.lineTo(p3[0], p3[1])
          ctx.lineTo(p5[0], p5[1])
          ctx.lineTo(p6[0], p6[1])
          ctx.lineTo(p4[0], p4[1])

          ctx.moveTo(p4[0], p4[1])
          ctx.lineTo(p6[0], p6[1])
          ctx.lineTo(p7[0], p7[1])
          ctx.lineTo(p1[0], p1[1])
          ctx.lineTo(p4[0], p4[1])
          ctx.closePath()
        }
      })
      this.$echarts.graphic.registerShape('MyCubeRect', MyCubeRect)
      this.$echarts.graphic.registerShape('MyCubeShadow', MyCubeShadow)
    }

(2)グラフィックスのレンダリング

バーチャートオプション: {
        ツールチップ: {
          トリガー: '軸'、
          軸ポインタ:
            タイプ: 'クロス'、
            ラベル: {
              背景色: '#6a7985'
            }
          }
        },
        グリッド: {
          ラベルを含む: true、
          上: '30px'、
          下: '0px'、
          左: '0px'
        },
        x軸:
          タイプ: 'カテゴリ',
          軸ラベル: {
            間隔: 0,
            フォントサイズ: フォントサイズ(12)
          },
          軸線: {
            表示: 偽、
            線のスタイル:
              色: '#98b9c5'
            }
          },
          data: [] // バックエンド js を通じて渡されるデータ},
        y軸: {
          タイプ: '値',
          軸ラベル: {
            フォントサイズ: フォントサイズ(12)
          },
          軸線: {
            表示: 偽、
            線のスタイル:
              色: '#98b9c5'
            }
          },
          分割行: {
            線のスタイル:
              色: '#3a586a',
              タイプ: '破線'
            }
          }
        },
        シリーズ: [{
          名前:「単位面積あたりのエネルギー消費量」
          タイプ: 'カスタム'、
          レンダリングアイテム: (パラメータ、API) => {
            location = api.coord([api.value(0), api.value(1)]) とします。
            戻る {
              タイプ: 'グループ'、
              子供たち: [{
                タイプ: 'MyCubeRect',
                形:
                  アピ、
                  x値: api.value(0) - 0.5、
                  y値: api.value(1)、
                  x: 場所[0],
                  y: 場所[1]
                },
                スタイル: api.style()
              },
              {
                タイプ: 'MyCubeShadow',
                形:
                  アピ、
                  x値: api.value(0) - 0.5、
                  y値: api.value(1)、
                  x: 場所[0],
                  y: 場所[1]
                },
                スタイル: {
                  塗りつぶし: api.style(),
                  文章: ''
                }
              }]
            }
          },
          スタック: 「単位面積あたりのエネルギー消費量」、
          ラベル: {
            表示: true、
            位置: 'トップ'、
            フォーマッタ: '{c}',
            テキストスタイル: {
              フォントサイズ: フォントサイズ(12)
              色: '#fff',
              配置: '中央'
            }
          },
          アイテムスタイル: {
            色: 新しい this.$echarts.graphic.LinearGradient(
              0、0、0、1、
              [
                { オフセット: 0、色: '#b1950d' },
                { オフセット: 0.5、色: '#aea20d' },
                { オフセット: 1、色: '#a5aa12' }
              ]
            )
          },
          data: [] //バックエンドから渡されるデータ}]
      }

注記:

1) グラフィックを登録する場合、スタイルのみを使用できます: api.style();
テキスト: ''ラベルを使用して後でグラフの上に値を配置できます
2) this.$echarts は均一にパッケージ化されており、具体的な状況を具体的に考慮する必要があります。
3) グラフィックを生成する

バーチャートを生成する() {
      vm = this とします
      if (this.$refs['uintEnergyConsume']) { //this.$refs は生成されたグラフィック領域の参照値です this.$echarts.graphic.registerShape('MyCubeRect', this.MyCubeRect)
        this.$echarts.graphic.registerShape('MyCubeShadow', this.MyCubeShadow)
        this.barChart = this.$echarts.init(this.$refs['uintEnergyConsume'])
        this.barChart.setOption(this.barChartOption、false、true)
        $(window).resize(function () { //画面の適応 vm.handleResize()
        })
      }
    }

(4)テンプレート内のコード

<div ref="uintEnergyConsume" id="uintEnergyConsume" class="chart-container" 
 style="width: 100%;" element-loading-text="読み込み中..."></div>
</div>

(5)その効果は以下のとおりである。

参照グラフィックURL: VueはEchartsを使用して3次元棒グラフを実装します

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue Echarts はスクロール効果のある縦棒グラフを実装します
  • Vue+echarts は 3D 縦棒グラフを実現します
  • Vueはechartsを使用して水平方向の列グラフの例を実装します
  • D3.js+Vue を使用したシンプルな縦棒グラフの実装
  • VueはEchartsを使用して3次元棒グラフを実装します
  • Vue echarts は水平棒グラフを実現します
  • Vue echarts は棒グラフの動的な表示を実現します
  • Vue+echarts で積み上げ棒グラフを実現
  • Vue で棒グラフを使用し、自分で設定を変更する方法
  • Vueはechartsを使用して3次元の縦棒グラフを実装します

<<:  MySQL 8.0.20 winx64 のインストールと設定方法のグラフィックチュートリアル

>>:  Maven プロジェクトのリモート デプロイメント && Tomcat を使用してデータベース接続を構成する方法

推薦する

高品質なJavaScriptコードの書き方

目次1. 読みやすいコード1. 統一コード形式2. マジックナンバーを削除する3. 単一機能原則2....

JS オブジェクトのコピー (ディープ コピーとシャロー コピー)

目次1. 浅いコピー1. Object.assign(ターゲット、ソース、ソース...) 2. スプ...

MySQL の group by と order by を一緒に使用する方法

テーブル:reward(報酬テーブル)があるとします。テーブル構造は次のようになります。 テーブルt...

CentOS 7 で MySQL 8 の複数のインスタンスを設定する詳細なチュートリアル (必要な数だけ設定できます)

原因最近、プロジェクトのリファクタリングを始めたのですが、マスタースレーブと読み取り書き込み分離を使...

JS に依存せずにレスポンシブ レイアウトを実現する CSS3 モバイル vw+rem メソッド

1. はじめに(1)vw/vhの紹介使用する前に、vw と rem とは何か、その機能について簡単に...

explainコマンドがMySQLデータを変更する理由

クエリで EXPLAIN を実行するとデータベースが変更されるかどうかを尋ねられた場合、おそらく「い...

JS関数のカリー化の詳細な説明

目次1. 補足知識ポイント: 関数の暗黙的な変換2. 補足知識: call/apply を使って配列...

Ubuntu 18.04 コマンドでタッチパッドを無効/有効にする

Ubuntu では、ショートカット キーでタッチパッドをオフにできない状況によく遭遇します。この問題...

フォント宝庫 50 種類の素晴らしい無料英語フォントリソース パート 1

デザイナーは独自のフォント ライブラリを持っているため、プロジェクトの設計時にすぐに使用できます。今...

JavaScript の実行コンテキストとコールスタックの詳細な説明

目次1. 実行コンテキストとは何か2. 実行コンテキスト スタックとは何ですか? 3. 実行コンテキ...

選択にスタイルを追加するための純粋な CSS (スクリプトなし) 実装

通常は ul、li を介して選択のデフォルト スタイルを変更して、実現をシミュレートします。このよう...

CocosCreator で物理エンジン ジョイントを使用する方法

目次マウスジョイント マウスジョイント距離ジョイント距離ジョイントモータージョイント直動ジョイント変...

Ubuntu 20.04にvncserverをインストールする方法

Ubuntu 20.04は2020年4月に正式にリリースされました。本日、ミラーシステムを正式にイン...

VMware esxi6.5 のインストールと使用の詳細な手順

目次導入建築ESXIの利点vSphere とは何ですか? 2. 仮想マシンの利点3. 仮想マシンを使...

MySQL 8.0.22 winx64 のインストールと設定のグラフィックチュートリアル

mysql 8.0.22 winx64のインストールと設定のグラフィックチュートリアルは参考までに、...