Vue+Echart 棒グラフで疫病データ統計を実現

Vue+Echart 棒グラフで疫病データ統計を実現

4 つのステップ、4 つのステップ。最後まで直接ジャンプする場合は、いくつかの依存関係と環境を構成することを忘れないでください。

1. まずプロジェクトにechartsをインストールします

1. echarts依存パッケージをインストールする

npm インストール echarts --save

2. プラグインディレクトリにecharts.jsファイルを作成し、そこにecharts依存パッケージをインポートします。

'vue' から Vue をインポートします
import echarts from 'echarts' //エラーが発生する可能性があるので注意が必要です。次のメソッドを使用できます。Vue.prototype.$echarts = echarts

上記の一般的な方法を使用すると、次のエラーが発生する可能性があります。「エクスポート 'default' ('echarts' としてインポート) が 'echarts' に見つかりませんでした。

これは、Echarts 5.x では上記のインポート方法がサポートされなくなったためです。詳細については、Echarts の公式 Web サイトをご覧ください。

つまり、次のように変更されます。

'vue' から Vue をインポートします
import * as echarts from 'echarts' //違いはここにあります Vue.prototype.$echarts = echarts

3. 先ほど作成したechart.jsをnuxt.config.js設定ファイルに導入します。

 プラグイン: ['~plugins/echarts']
 //これを追加するためだけに書いたので、ここにこれだけがあるというわけではありません//「@/plugins/echarts」という形式も使用できますが、ほぼ同じです

2. echartsに縦棒グラフテンプレートを導入する

(これはステップごとに書かれています。読みたくない場合は、最終コードがある最後までジャンプできます)

プロジェクトのコードには次のように書かれています:

<テンプレート>
  <div id="echarts">
    <div id="myChart"></div> 
  </div>
</テンプレート>
<script type="text/javascript">
エクスポートデフォルト{
  名前:「Echarts」、
  データ() {
    戻る {};
  },
  メソッド: {
      echartsInit() { // チャートを作成するメソッドを定義します。let myChart = this.$echarts.init(document.getElementById("myChart"));
      
      myChart.setOption({
        タイトル:
          テキスト: 「echarts の棒グラフで伝染病の統計を理解」
          テキスト配置: "自動"、
          左: '中央'
        },
        ツールチップ: {},
        // 州(水平軸)
        x軸:
          データ: ['月', '火', '水', '木', '金', '土', '日']
          //データ: this.areaName, //これは最終データであり、このタイプを使用せずにテストを開始できることを示しています: "category",
          軸ラベル: {
            rotate: -45, // 30 度回転します。そうしないと、水平軸が完全に表示されません。show: true, // このコード行は、x 軸のテキストを表示するかどうかを制御します。},
        },
        y軸: {},
        // 確認された番号シリーズ: [
          {
            名前:「確認された症例の総数」、
            タイプ: "バー",
            //データ: this.areaConfirm, //これは最終データであり、このデータがなくてもテストを開始できることを示しています: [120, 200, 150, 80, 70, 110, 130],
          },
        ]、
      });
    },
  }
  //mounted はテンプレートが HTML にレンダリングされた後、通常は初期化ページが完了した後に呼び出され、その後 HTML DOM ノードに対していくつかの必要な操作が実行されます。mounted() {
  	this.echartsInit();
  },
  }
</スクリプト>
<スタイルスコープ>
	#myChart {
	  幅: 100%;
	  高さ: 300px;
	  左マージン: 自動;
	  右マージン: 自動;
	}
</スタイル>

3. API経由でデータをインポートする

私が使用しているインターフェースアドレスはTencentから提供されています: https://view.inews.qq.com/g2/getOnsInfo?name=disease_h5 クリックして表示

大量のデータが表示されるので、必要なデータを取得するにはデータを整理して分割する必要があります。

1. まずクロスドメインの問題を解決する必要があります

npm で axios をインストールします。

2. インストール後、nuxt.config.js ファイルに次の設定を追加します。

モジュール.エクスポート = {
//すべてのモジュールではなく、追加する部分を示します: ["@nuxtjs/axios"],

  アクシオス:
    プロキシ: true
  },

  プロキシ: {
    '/api/': {
    target: 'https://view.inews.qq.com', //このウェブサイトはオープンソースであり、データをリクエストできます。pathRewrite: {
    '^/api/': '/',
    変更元: true
    }
   }
  },
}

3. インターフェースデータを処理する

    取得データ() {
      this.$axios.get(`/api/g2/getOnsInfo?name=disease_h5`).then(({データ}) => {
        //console.log(JSON.parse(data.data.replace('\\"', "'")));
        this.area = JSON.parse(
          data.data.replace('\\"', "'")
        ).areaTree[0].children;
        // エリア名 this.areaName = this.area.map((o) => {
          o.name を返します。
        });
        //確認された症例の総数 this.areaConfirm = this.area.map((o) => {
          o.total.confirm を返します。
        });
        console.log(this.areaConfirm);
        // 現在の感染者数 hh 結局使わなかったようです。必要なら参照してください this.areaNowConfirm = this.area.map((o) => {
          o.total.nowConfirm を返します。
        });
        this.echartsInit();
      });
    },

処理されたデータは、欲しいものだけを取ってください、ということを明確に示しています。

4. コードを統合する

わあ、ついに完成しました。これが私のコードです

<テンプレート>
  <div id="echarts">
    <div id="myChart"></div>
  </div>
</テンプレート>
<script type="text/javascript">
エクスポートデフォルト{
  名前:「Echarts」、
  データ() {
    戻る {
      エリア: []、
      エリア名: [],
      エリア確認: [],
      エリア現在確認: [],
    };
  },
  
  メソッド: {
    取得データ() {
      this.$axios.get(`/api/g2/getOnsInfo?name=disease_h5`).then(({データ}) => {
        console.log(JSON.parse(data.data.replace('\\"', "'")));
        this.area = JSON.parse(
          data.data.replace('\\"', "'")
        ).areaTree[0].children;
        // エリア名 this.areaName = this.area.map((o) => {
          o.name を返します。
        });
        //確認された症例の総数 this.areaConfirm = this.area.map((o) => {
          o.total.confirm を返します。
        });
        console.log(this.areaConfirm);
        // 現在確認されている症例 this.areaNowConfirm = this.area.map((o) => {
          o.total.nowConfirm を返します。
        });
        this.echartsInit();
      });
    },
    echartsInit() {
      myChart を this.$echarts.init(document.getElementById("myChart")) とします。
      myChart.setOption({
        タイトル:
          テキスト: 「echarts の棒グラフで伝染病の統計を理解」
          テキスト配置: "自動"、
          左: '中央'
        },
        ツールチップ: {},
        // 州 xAxis: {
          データ: this.areaName、
          タイプ:「カテゴリー」、
          軸ラベル: {
            rotate: -45, // 30 度回転 show: true, // このコード行は、x 軸上のテキストを表示するかどうかを制御します},
        },
        y軸: {},
        // 確認された番号シリーズ: [
          {
            名前:「確認された症例の総数」、
            タイプ: "バー",
            データ: this.areaConfirm、
          },
        ]、
      });
    },
  },
  マウント() {
    データの取得
    this.echartsInit();
  },
};
</スクリプト>
<スタイルスコープ>
#myChart {
  幅: 100%;
  高さ: 300px;
  左マージン: 自動;
  右マージン: 自動;
}
</スタイル>
 

これで、Vue+Echart 棒グラフを使用して疫病データ統計を実現する方法についての説明は終わりです。Vue Echart 棒グラフ データ統計に関するより関連性の高いコンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue+Echartは3次元の縦棒グラフを実現します
  • VueはEchartアイコンプラグインの棒グラフを使用します
  • Echarts を使用して棒グラフを描く vue の詳細な説明
  • Vue echarts は水平棒グラフを実現します
  • Vue+echart で 2 列チャートを実現
  • Vueは水平の斜めの棒グラフを実装します
  • Vue+echarts で積み上げ棒グラフを実現
  • Vue+echarts でプログレスバーのヒストグラムを実現
  • VueはEchartsを使用して3次元棒グラフを実装します
  • Vue+ Antv F2 は積み上げ棒グラフを実現します

<<:  MySQLデータベースインデックスの詳細な説明

>>:  hrefパラメータ転送における中国語の文字化けについて

推薦する

MySQLで重複行を削除する方法

SQL文 /* MySQL で重複行を削除するいくつかの方法 ---Chu Minfei ---20...

CSS3 で作成したホバーズーム効果

結果:実装コード: html <link href='https://fonts.go...

CentOS7.x のアンインストールとインストール MySQL5.7 の操作手順とエンコード形式の変更方法

1. MySQL 5.7 のアンインストール1.1查看yum是否安裝過mysql CD yum li...

ES6 配列のコピーおよびフィルメソッド copyWithin() および fill() の具体的な使用法

目次バッチコピー copyWithin()配列を埋めるメソッド fill()指数の計算方法については...

ウェブページ要素の完全な分析

相対的な長さの単位それら説明: 相対的な長さの単位。現在のオブジェクト内のテキストのフォント サイズ...

vxe-table を使用して vue で編集可能なテーブルを作成するプロセス

プロジェクトには、オンラインで編集する必要があるテーブルがあります。最初は、要素の el-table...

CSS を使用して正方形の div を実装する 2 つの方法

目標: 辺の長さが等しい正方形を作成する方法 1: 単位 vw を使用する (ps これが最も簡単な...

VueRouterルーティングの詳細な説明

目次vueルーター1. ルーティングの概念を理解する1.1 ルーティングとは何ですか? 1.2. バ...

Reactでpropsを使用する方法と制限する方法

コンポーネントの props (props はオブジェクトです)機能: コンポーネントに渡されたデー...

TS 数値区切り文字とより厳密なクラス属性チェックの詳細な説明

目次概要演算子の改良と正確なinstanceofよりスマートなオブジェクトリテラル推論固有のシンボル...

jQuery を使用してカルーセル効果を実装する

本日ご紹介するのは、jQuery を使用してシンプルなカルーセルを実装する方法です。実装の原則は次の...

JavaScript ドキュメント オブジェクト モデル DOM

目次1. JavaScriptはページ内のすべてのHTML要素を変更できる1. IDでHTML要素を...

CSS3+ベジェ曲線でスケーラブルな入力検索ボックス効果を実現

では、早速レンダリングを見てみましょう。 コア コードはtransition: cubic-bezi...

CSS3 グラデーション背景の互換性の問題

グラデーションの背景色を作成するときは、 linear-gradient() 関数を使用して線形グラ...

さまざまな MySQL テーブルソートルールのエラーの分析

MySQL が複数のテーブルを結合するときに、次のエラーが報告されます: [Err]1267 – 操...