ホームページ ウェブフロントエンド Vue.js Vue が Echarts チャートをカプセル化する方法

Vue が Echarts チャートをカプセル化する方法

Aug 12, 2021 pm 05:53 PM
echarts vue.js チャート

始める前に、まず通常のコンポーネント登録プロセスに従い、プロジェクトのコンポーネント ディレクトリにレーダー チャートという名前の新しいコンポーネントを作成し、そのコンポーネントをデモ ページに導入して使用します。

新しいレーダー チャート コンポーネントのコンテンツ:

// radar-chart.vue (子组件)
<template>
    <p style="width: 100%; height: 100%;"></p>
</template>

<script>
export default {
    name: &#39;radar-chart&#39;
};
</script>

<style scoped>

</style>
ログイン後にコピー

デモ ページのコード:

// demo.vue (父组件)
<template>
    <p style="border: 1px solid black; width: 400px; height: 300px; margin: 5px;">
        <radar-chart></radar-chart>
    </p>
</template>

<script>
import radarChart from &#39;@/components/proj-components/echarts/radar-chart&#39;;
export default {
    name: &#39;radar-chart-demo&#39;,
    components: {
        radarChart,
    },
};
</script>

<style scoped>

</style>
ログイン後にコピー

デモ ページのレンダリング 1:

Vue が Echarts チャートをカプセル化する方法

チャートの初期化

準備作業が完了したら、ECharts を導入し、コンポーネント内で ECharts インスタンスを初期化する必要があります。公式ウェブサイトとデータからのインスタンス。
(1) Radar-chart.vue に ECharts を導入します:

// radar-chart.vue (子组件)
import echarts from &#39;echarts&#39;;
ログイン後にコピー

(2) メソッド内でチャート構成データを作成します データ形式は Echarts 公式サイトを参照してください:

// radar-chart.vue (子组件)

    methods: {
        // 初始化图表配置
        initOption() {
            let vm = this;
            vm.option = {
                title: {
                    text: &#39;基础雷达图&#39;
                },
                tooltip: {},
                legend: {
                    data: [&#39;预算分配(Allocated Budget)&#39;, &#39;实际开销(Actual Spending)&#39;]
                },
                radar: {
                    // shape: &#39;circle&#39;,
                    name: {
                        textStyle: {
                            color: &#39;#fff&#39;,
                            backgroundColor: &#39;#999&#39;,
                            borderRadius: 3,
                            padding: [3, 5]
                        }
                    },
                    indicator: [{ name: &#39;销售(sales)&#39;, max: 6500}, { name: &#39;管理(Administration)&#39;, max: 16000}, { name: &#39;信息技术(Information Techology)&#39;, max: 30000}, { name: &#39;客服(Customer Support)&#39;, max: 38000}, { name: &#39;研发(Development)&#39;, max: 52000}, { name: &#39;市场(Marketing)&#39;, max: 25000}]
                },
                series: [{
                    name: &#39;预算 vs 开销(Budget vs spending)&#39;,
                    type: &#39;radar&#39;,
                    // areaStyle: {normal: {}},
                    data: [{value: [4300, 10000, 28000, 35000, 50000, 19000], name: &#39;预算分配(Allocated Budget)&#39;}, {value: [5000, 14000, 28000, 31000, 42000, 21000], name: &#39;实际开销(Actual Spending)&#39;}]
                }]
            };
        },
    },
ログイン後にコピー

(3 ) チャートを初期化します。 コンポーネント フックにマウントされたメソッド内:

// radar-chart.vue (子组件)
    mounted() {
        this.initOption();
        this.$nextTick(() => { // 这里的 $nextTick() 方法是为了在下次 DOM 更新循环结束之后执行延迟回调。也就是延迟渲染图表避免一些渲染问题
            this.ready();
        });
    },
ログイン後にコピー

メソッド内:

// radar-chart.vue (子组件)
   ready() {
      let vm = this;
      let dom = document.getElementById(&#39;radar-chart&#39;);

      vm.myChart = echarts.init(dom);
      vm.myChart && vm.myChart.setOption(vm.option);
   },
ログイン後にコピー

デモ ページ レンダリング 2:

Vue が Echarts チャートをカプセル化する方法

# # ECharts の導入、チャート構成の初期化、チャートの初期化の 3 つのステップがあり、最後にデモ ページで ECharts のレーダー チャートがプロジェクトに初期表示されていることが確認できます。

チャート構成プロパティの抽出 (強調)

上記のレーダー チャートは正常に作成されましたが、rader-chart.vue のデータが Dead と書かれていることは明らかです。繰り返し呼び出すことはできません。続いて、梱包作業を始めます。

カプセル化の考え方は次のとおりです:

1.demo.vue はパーソナライズされたデータのセットを Radar-chart.vue

2.rader-chart に渡します.vue は props を渡します オプションはデータを受け取ります

#3. 受信したデータを調整し、構成データを上書きします オプション

##4. チャートを初期化します

#具体的な実装: サブルーチンにデータを渡します-component in data マウントされた変数を定義して値を代入

// demo.vue (父组件)
<template>
    <p style="border: 1px solid black; width: 900px; height: 600px; margin: 5px;">
        <radar-chart :indicator="indicator" :legendData="radarData"></radar-chart>
    </p>
</template>

<script>
import radarChart from &#39;@/components/proj-components/echarts/radar-chart&#39;;
export default {
    name: &#39;radar-chart-demo&#39;,
    components: {
        radarChart,
    },
    mounted() {
        this.indicator = [
            { name: &#39;销售&#39;, max: 6500 },
            { name: &#39;管理&#39;, max: 16000 },
            { name: &#39;信息技术&#39;, max: 30000 },
            { name: &#39;客服&#39;, max: 38000 },
        ];
        this.radarData = [
            {
                value: [4000, 15000, 26000, 21000],
                name: &#39;实际开销(Actual Spending)&#39;,
            }
        ];
    },
    data() {
        return {
            indicator: [], // 雷达指示器数据
            legendData: [], // 雷达图例数据
        };
    },
};
</script>

<style scoped>

</style>
ログイン後にコピー

propsで親コンポーネントからデータを受信

// radar-chart.vue (子组件)

    props: {
        // 指示器数据,必传项
        // 格式举例 [{ name: &#39;a&#39;, max: 1},{ name: &#39;a&#39;, max: 1},{ name: &#39;a&#39;, max: 1}]
        indicator: {
            type: Array,
            default: () => []
        },
        // 图例数据,必填项。
        // 格式举例 [{ value: [5000, 14000, 28000], name: &#39;name&#39; },{ value: [5000, 14000, 28000], name: &#39;name&#39; }]
        legendData: {
            type: Array,
            default: () => []
        },
    },
ログイン後にコピー

ready()でチャートデータオプションを更新 インジケーターとデータを更新する場合ここの属性の値は、initOption()

// radar-chart.vue (子组件)

    ready() {
       let vm = this;
       let dom = document.getElementById(&#39;radar-chart&#39;);

       vm.myChart = echarts.init(dom);

       // 得到指示器数据
       vm.option.radar.indicator = vm.indicator;
       // 得到图例数据
       vm.option.series[0].data = vm.legendData;

       vm.myChart && vm.myChart.setOption(vm.option);
    },
ログイン後にコピー

デモ ページのレンダリング画像 3:

#詳細の最適化でこれら 2 つの値を初期化する必要はありません。その他の考慮事項:

Vue が Echarts チャートをカプセル化する方法1. ページに複数のグラフがある場合、グラフ ID が自動的に生成されます。

// radar-chart.vue (子组件)
<template>
    <p :id="chartId" style="height: 100%; width: 100%;"></p>
</template>

<script>
let chartIdSeed = 1;

export default {
    data() {
        return {
            chartId: 1,
        };
    },
    mounted() {
        let vm = this;
        vm.chartId = &#39;radar-chart_&#39; + chartIdSeed++;
    },
    methods: {
        let vm = this;
        let dom = document.getElementById(vm.chartId);
    }
};
</script>
ログイン後にコピー

2. チャート データ属性は props で受信され、チャートのデフォルト構成属性はdefaultConfig で保存されます。親コンポーネントによって渡された構成属性 chartConfig は、$attrs を通じて直接取得され、最終的にマージされます。拡張やメンテナンスに役立つよう、finallyConfig に保存して使用できます。

// radar-chart.vue (子组件)

<script>
export default {
    data() {
        return {
            // 默认配置项。以下配置项可以在父组件 :chartConfig 进行配置,会覆盖这里的默认配置
            defaultConfig: {
                tooltipShow: true
            },
            finallyConfig: {}, // 最后配置项
        };
    },
    mounted() {
        // 在这里合并默认配置与父组件传进来的配置
        vm.finallyConfig = Object.assign({}, vm.defaultConfig, vm.$attrs.chartConfig);
    },
    methods: {
        initOption() {
            vm.option = {
                tooltip: {
                    show: vm.finallyConfig.tooltipShow, // 在这里使用最终配置
                },
            }
        },
    }
};
</script>
ログイン後にコピー

3. ウォッチを使用してチャート データの更新を監視します

// radar-chart.vue (子组件)
    watch: {
        legendData() {
            this.$nextTick(() => {
                this.ready();
            });
        }
    },
ログイン後にコピー

4. ウィンドウのサイズ変更イベントとチャートのクリック イベントを追加します

// radar-chart.vue (子组件)

export default {
    data() {
        return {
            chartResizeTimer: null, // 定时器,用于resize事件函数节流
        };
    },
    methods: {
        ready() {
            // 添加窗口resize事件
            window.addEventListener(&#39;resize&#39;, vm.handleChartResize);
            
            // 触发父组件的 @chartClick 事件
            vm.myChart.on(&#39;click&#39;, function(param) {
                vm.$emit(&#39;chartClick&#39;, param);
            });
        },
        
        // 处理窗口resize事件
        handleChartResize() {
            let vm = this;
            clearTimeout(vm.chartResizeTimer);
            vm.chartResizeTimer = setTimeout(function() {
                vm.myChart && vm.myChart.resize();
            }, 200);
        },
    },
    beforeDestroy() {
        // 释放该图例资源,较少页面卡顿情况
        if (this.myChart) this.myChart.clear();
        // 移除窗口resize事件
        window.removeEventListener(&#39;resize&#39;, this.handleChartResize);
    }
};
ログイン後にコピー

[関連する推奨事項:vue. js チュートリアル

>>]

以上がVue が Echarts チャートをカプセル化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Googleスプレッドシートの凡例にラベルを追加する方法 Googleスプレッドシートの凡例にラベルを追加する方法 Feb 19, 2024 am 11:03 AM

この記事では、Google スプレッドシートの凡例に、名前や ID を提供する 1 つの事柄に焦点を当てたラベルを追加する方法を説明します。凡例はシステムまたは物事のグループを説明し、関連するコンテキスト情報を提供します。 GoogleSheet の凡例にラベルを追加する方法 グラフを操作するときに、グラフを理解しやすくしたい場合があります。これは、適切なラベルと凡例を追加することで実現できます。次に、Google スプレッドシートの凡例にラベルを追加してデータをわかりやすくする方法を説明します。チャートを作成します。 凡例ラベルのテキストを編集します。 始めましょう。 1] グラフを作成する 凡例にラベルを付けるには、まずグラフを作成する必要があります。 まず、GoogleSheets の列または行に入力します。

PHPインターフェイスとEChartsを使用して視覚的な統計グラフを生成する方法 PHPインターフェイスとEChartsを使用して視覚的な統計グラフを生成する方法 Dec 18, 2023 am 11:39 AM

データの視覚化がますます重要になっている今日の状況において、多くの開発者は、さまざまなツールを使用してさまざまなチャートやレポートを迅速に生成し、データをより適切に表示し、意思決定者が迅速な判断を下せるようにしたいと考えています。この文脈では、Php インターフェイスと ECharts ライブラリを使用すると、多くの開発者が視覚的な統計グラフを迅速に生成するのに役立ちます。この記事では、Php インターフェイスと ECharts ライブラリを使用して視覚的な統計グラフを生成する方法を詳しく紹介します。具体的な実装ではMySQLを使用します。

ECharts と Python インターフェイスを使用してダッシュボードを描画する手順 ECharts と Python インターフェイスを使用してダッシュボードを描画する手順 Dec 18, 2023 am 08:40 AM

ECharts と Python インターフェイスを使用してダッシュボードを描画する手順には、特定のコード サンプルが必要です 概要: ECharts は、Python インターフェイスを通じてデータ処理とグラフィック描画を簡単に実行できる優れたデータ視覚化ツールです。この記事では、ECharts と Python インターフェイスを使用してダッシュボードを描画する具体的な手順とサンプル コードを紹介します。キーワード: ECharts、Python インターフェイス、ダッシュボード、データ視覚化 はじめに ダッシュボードは、データ視覚化の一般的に使用される形式であり、

マップ ヒート マップを使用して ECharts で都市の熱を表示する方法 マップ ヒート マップを使用して ECharts で都市の熱を表示する方法 Dec 18, 2023 pm 04:00 PM

マップ ヒート マップを使用して ECharts で都市熱を表示する方法 ECharts は、マップ ヒート マップなど、開発者が使用できるさまざまなチャート タイプを提供する強力なビジュアル チャート ライブラリです。マップ ヒート マップを使用すると、都市や地域の人気を示すことができ、さまざまな場所の人気や密度を迅速に把握するのに役立ちます。この記事では、ECharts でマップ ヒート マップを使用して都市の熱を表示する方法を紹介し、参考となるコード例を示します。まず、地理情報を含むマップ ファイル、EC が必要です。

カレンダー チャートを使用して ECharts に時間データを表示する方法 カレンダー チャートを使用して ECharts に時間データを表示する方法 Dec 18, 2023 am 08:52 AM

カレンダー チャートを使用して ECharts で時間データを表示する方法 ECharts (Baidu のオープン ソース JavaScript チャート ライブラリ) は、強力で使いやすいデータ視覚化ツールです。折れ線グラフ、棒グラフ、円グラフなど、さまざまな種類のグラフが提供されています。カレンダー チャートは、ECharts の非常に特徴的で実用的なチャート タイプであり、時間関連のデータを表示するために使用できます。この記事では、ECharts でカレンダー チャートを使用する方法を紹介し、具体的なコード例を示します。まず、使用する必要があります

Wordにグラフを挿入する方法 Wordにグラフを挿入する方法 Mar 20, 2024 pm 03:41 PM

データをより直観的に表示するために、グラフを使用して表示する必要がある場合があります。しかし、グラフというと、多くの人は Excel でしか操作できないと考えています。実際には、そうではありません。Word も使用できます。グラフを直接挿入します。どうやってするの?ちょっと見てみればわかります。 1. まず、Word 文書を開きます。 2. 次に、「挿入」メニューで「グラフ」ツールボタンを見つけてクリックします。 3. 「グラフ」ボタンをクリックして、適切なグラフを選択します。ここで、任意にグラフの種類を選択し、「OK」をクリックします。 4. グラフを選択すると、システムは自動的に Excel グラフを開きます。入力されている場合は、データを変更するだけです。すでにこちらのフォームをご用意いただいている方は、

ECharts は jQuery に依存しますか?徹底した分析 ECharts は jQuery に依存しますか?徹底した分析 Feb 27, 2024 am 08:39 AM

ECharts は jQuery に依存する必要がありますか?詳細な解釈には、特定のコード例が必要です。ECharts は、豊富なチャート タイプと対話型関数を提供する優れたデータ視覚化ライブラリであり、Web 開発で広く使用されています。 ECharts を使用するとき、多くの人は「ECharts は jQuery に依存する必要があるのか​​?」という疑問を持つでしょう。この記事ではこれについて詳しく説明し、具体的なコード例を示します。まず、明確にしておきたいのですが、ECharts 自体は jQuery に依存しません。

ヒストグラムを使用して ECharts にデータを表示する方法 ヒストグラムを使用して ECharts にデータを表示する方法 Dec 18, 2023 pm 02:21 PM

ヒストグラムを使用して ECharts でデータを表示する方法 ECharts は、データ視覚化の分野で非常に人気があり、広く使用されている JavaScript ベースのデータ視覚化ライブラリです。その中でも、ヒストグラムは最も一般的でよく使用されるグラフの種類であり、さまざまな数値データの大きさ、比較、傾向分析を表示するために使用できます。この記事では、ECharts を使用してヒストグラムを描画する方法とコード例を紹介します。まず、ECharts ライブラリを HTML ファイルに導入する必要があります。これは次の方法で導入できます。

See all articles