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 を使用してデータベース接続を構成する方法

推薦する

Mysql binlog ログファイルが大きすぎる場合の解決策

目次1. 関連するbinlog設定2. binlogに関する詳細設定2.1 バイナリログモードの変更...

JavaScript を使用して動的な QQ 登録ページを作成する

目次1. はじめに1. 基本レイアウト2. 写真を自動的に切り替える3. コンテンツを追加する4. ...

vuexの強制リフレッシュによるデータ損失問題の分析

vuex 永続状態基本原則: すべての vuex データをローカルストレージに保存し、ページが更新さ...

AWSサーバーリソースを無料で使用する方法を教えます

AWS - Amazon のクラウド コンピューティング サービス プラットフォーム以前、AWS の...

CSS background-blend-modeの仕組みを深く理解する

この記事は共有および集約することを歓迎します。全文を転載する必要はありません。著作権を尊重してくださ...

CSS の新機能には、コントロールページの再描画と再配置の問題が含まれています

新しい CSS プロパティ contain を紹介する前に、読者はページの再描画と再配置が何であるか...

Dockerはプライベートライブラリイメージを完全に削除します

まず、インターネット上の一般的な慣行を見てみましょうデフォルトでは、プライベート ライブラリはイメー...

Mac で MySQL バージョン 5.6 のパスワードを設定する方法

MySQLはインストール時に設定できますが、それより低いバージョンは設定できないようで、インストール...

Linux のパスワードを紛失した場合にリセットする方法

1. スタートアップメニューでは、カーソルを最初の行に移動します - eを押します 2. UTF-8...

MySQL構成SSL証明書ログインの実装

目次序文1. MySQLはSSL構成を有効にする1.1 SSLが有効になっているかどうかを確認する1...

Redo ログと Undo ログに基づく MySQL クラッシュ回復の分析

目次MySQLクラッシュ回復プロセス1. ブラックボックス下のデータフローを更新する2. やり直しロ...

Centos で MySQL パスワードを変更する方法

1. MySQL ログイン設定を変更します。 # vim /etc/my.cnf文を追加: skip...

MySQLカスタム関数とストアドプロシージャの詳細な説明

序文この記事では主にMySQLのカスタム関数とストアドプロシージャに関する関連コンテンツを紹介し、皆...

Vue はアップロードした画像に透かしを追加できるようになりました (アップグレード版)

vueプロジェクトでは、アップロードした画像に透かしを追加して参照できるようにするアップグレード版...

Windows での MySQL 5.7.18 インストール チュートリアル

この記事では、圧縮パッケージから MySQL をインストールする方法について説明します。 1. My...