ホームページ ウェブフロントエンド jsチュートリアル echartsで生成したチャートをthree.jsで応用する詳しい説明

echartsで生成したチャートをthree.jsで応用する詳しい説明

Nov 30, 2019 pm 03:20 PM
echarts

echartsで生成したチャートをthree.jsで応用する詳しい説明

最近、グループ内の数人が echarts チャートをthree.js モデルに貼り付ける方法を質問しました。どちらもキャンバスにレンダリングされ、echart によって生成されたキャンバスをテクスチャとして直接使用できるため、この問題は実際には非常に単純です。

この方法は確実に実行可能であるため、直接コーディングを開始します。

まず、3 つの基本的なシーンを構築しましょう。ここでは繰り返しません。

次に、新しい平面を作成すると、この平面に画像を貼り付けることができます。

[関連コースの推奨: JavaScript ビデオ チュートリアル ]

addPlane() {
    var geometry = new THREE.PlaneGeometry(10,10);
    var material = new THREE.MeshBasicMaterial({ 
        side: THREE.DoubleSide,
        // transparent:true
    });
    this.plane = new THREE.Mesh(geometry, material);
    this.scene.add(this.plane);
}
ログイン後にコピー

カメラの角度を設定します。この時点で、シーンにはホワイトボードがあります。

echartsで生成したチャートをthree.jsで応用する詳しい説明

次に、echarts の公式 Web サイトを開いてケースを見つけ、ダッシュボードを作成します。コードをコピーします。走り始めます。

デモンストレーションの便宜上、本体内に 3 つの div とチャートのコンテナーとして 2 つの div を作成しました。実際の開発ではチャートのコンテナを表示する必要はありませんし、ボディに追加する必要もありません。

<div id="webgl"   style="max-width:90%"></div>
<div id="echart" style="width:512px;height: 512px;margin-left: 620px;"></div>
ログイン後にコピー
var myChart = echarts.init(document.getElementById(&#39;echart&#39;));
option = {
    tooltip: {
        formatter: "{a} <br/>{b} : {c}%"
    },
    //toolbox会在右上角生成两个功能按钮,咱们不需要,直接干掉。
    // toolbox: { 
    //     feature: {
    //         restore: {},
    //         saveAsImage: {}
    //     }
    // },
    series: [
        {
            name: &#39;业务指标&#39;,
            type: &#39;gauge&#39;,
            detail: { formatter: &#39;{value}%&#39; },
            data: [{ value: 50, name: &#39;完成率&#39; }]
        }
    ]
};
option.series[0].data[0].value = (Math.random() * 100).toFixed(2) - 0;
myChart.setOption(option, true);
const dom = document.getElementById("webgl");
const scene = new Basescene(dom);
scene.addPlane();
ログイン後にコピー

この時点で、次のページが表示されました:

echartsで生成したチャートをthree.jsで応用する詳しい説明

方法 1: CanvasTexture

three.js API:CanvasTexture があります。 Canvas オブジェクトを渡し、このメソッドを使用して上記のタスクを完了できます。

CanvasTexture( Canvas : HTMLElement, マッピング : 定数, WrapS : 定数, WrapT : 定数, magFilter : 定数, minFilter : 定数, format : 定数, type : 定数, anisotropy : Number )

changeTextureT(texture){
    this.plane.material.map = new THREE.CanvasTexture(texture)
    this.plane.material.needsUpdate = true  
    var thiscancas = document.getElementById("echart").getElementsByTagName(&#39;canvas&#39;)[0]
    scene.changeTextureT(thiscancas)
}
ログイン後にコピー
## #実行結果は次のとおりですが、確かに不明瞭で、遭遇した問題と同じです。 echart をより大きく描画しようとしますが、これは適応的なものであり、ダッシュボードが見苦しくなり、想像したものと異なります。テーブルを自分で描画する場合は、この方法で対処できます。

echartsで生成したチャートをthree.jsで応用する詳しい説明

#方法 2: getDataURL


echart はキャンバスもレンダリングするので、API を見てください。方法があるはずです。画像をエクスポートします。これは以下の API であり、解像度を設定するためのオプションのパラメーターがあります。

changeTextureE(texture){
    this.plane.material.map = new THREE.TextureLoader().load(texture)
    this.plane.material.needsUpdate = true  
}
var texture = myChart.getDataURL({
    pixelRatio: 4,
    backgroundColor: &#39;#fff&#39;
}); 
scene.changeTextureE(texture)
ログイン後にコピー
echartsで生成したチャートをthree.jsで応用する詳しい説明 解像度を 4 に設定すると、実際より鮮明になります。

#次の 3 つの図は、それぞれ解像度 1、解像度 4、および方法 1 の効果を比較したものです。 echartsで生成したチャートをthree.jsで応用する詳しい説明

echartsで生成したチャートをthree.jsで応用する詳しい説明echartsで生成したチャートをthree.jsで応用する詳しい説明

3 つの写真の違いは明らかです (方法 2 > 方法 1)。どの方法を使用するかはすでに明らかです。

echartsで生成したチャートをthree.jsで応用する詳しい説明

以下は動的な画像です。最初はテクスチャがありません。その後、方法 1 で生成されたテクスチャが貼り付けられ、点滅し、方法 2、解像度で生成されたテクスチャに置き換えられます。 4.拡大しても非常に鮮明です。


最後の質問: echart の多くのチャートにはバッファー アニメーションがあります。リアルタイムでマップを更新したい場合、それは可能ですか?フレームレートは維持できるでしょうか?

echartsで生成したチャートをthree.jsで応用する詳しい説明すべてのコード:

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>three.js使用Echarts贴图</title>
    <script src="../js/three.js"></script>
    <script src="../js/controls/OrbitControls.js"></script>
    <script src="./echarts.js"></script>
</head>
<body>
    <div id="webgl" style="width:512px;height: 512px;float: left;"></div>
    <div id="echart" style="width:512px;height: 512px;margin-left: 620px;"></div>
    <script>
        var myChart = echarts.init(document.getElementById(&#39;echart&#39;));
        option = {
            tooltip: {
                formatter: "{a} <br/>{b} : {c}%"
            },
            // toolbox: {
            //     feature: {
            //         restore: {},
            //         saveAsImage: {}
            //     }
            // },
            series: [
                {
                    name: &#39;业务指标&#39;,
                    type: &#39;gauge&#39;,
                    detail: { formatter: &#39;{value}%&#39; },
                    data: [{ value: 50, name: &#39;完成率&#39; }]
                }
            ]
        };
        option.series[0].data[0].value = (Math.random() * 100).toFixed(2) - 0;
        myChart.setOption(option, true);
        class Basescene {
            constructor(dom) {
                this.id = (new Date()).getTime();
                this.dom = dom;
                this.divWidth = this.dom.offsetWidth;
                this.divHeight = this.dom.offsetHeight;
                this.scene = new THREE.Scene();
                this.camera = new THREE.PerspectiveCamera(45, this.divWidth / this.divHeight, 1, 2000);
                this.renderer = new THREE.WebGLRenderer({
                    alpha: true,
                    antialias: true
                });
                this.controls = new THREE.OrbitControls(this.camera, this.renderer.domElement);
                this.init();
            }
            init() {
                this.camera.position.set(0, 0, 20);
                this.camera.lookAt(this.scene.position);
                this.renderer.setClearColor(0x222222);
                this.renderer.setSize(this.divWidth, this.divHeight);
                this.dom.appendChild(this.renderer.domElement);
                // this.scene.add(new THREE.AxesHelper(10));
                this.animate();
                this.addLight();
                console.log(this.scene);
            }
            addLight() {
                const light = new THREE.AmbientLight(0xffffff);
                this.scene.add(light);
            }
            render() {
                this.renderer.render(this.scene, this.camera);
            }
            animate = () => {
                this.request = requestAnimationFrame(this.animate);
                this.render();
            }
            addPlane() {
                var geometry = new THREE.PlaneGeometry(10, 10);
                var material = new THREE.MeshBasicMaterial({
                    side: THREE.DoubleSide,
                    // transparent:true
                });
                this.plane = new THREE.Mesh(geometry, material);
                this.scene.add(this.plane);
            }
            changeTextureE(texture) {
                this.plane.material.map = new THREE.TextureLoader().load(texture)
                this.plane.material.needsUpdate = true
            }
            changeTextureT(texture) {
                this.plane.material.map = new THREE.CanvasTexture(texture)
                this.plane.material.needsUpdate = true
            }
        }
        const dom = document.getElementById("webgl");
        const scene = new Basescene(dom);
        scene.addPlane();
        setTimeout(() => {
            var thiscancas = document.getElementById("echart").getElementsByTagName(&#39;canvas&#39;)[0]
            scene.changeTextureT(thiscancas)
        }, 2000);
        setTimeout(() => {
            var texture = myChart.getDataURL({
                pixelRatio: 4,
                backgroundColor: &#39;#fff&#39;
            });
            scene.changeTextureE(texture)
        }, 4000);
    </script>
</body>
</html>
ログイン後にコピー

この記事は

js チュートリアル

列からのものです。ぜひ学習してください。

以上がechartsで生成したチャートをthree.jsで応用する詳しい説明の詳細内容です。詳細については、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衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

ECharts と Java インターフェイス: 折れ線グラフ、棒グラフ、円グラフなどの統計グラフを迅速に実装する方法。 ECharts と Java インターフェイス: 折れ線グラフ、棒グラフ、円グラフなどの統計グラフを迅速に実装する方法。 Dec 17, 2023 pm 10:37 PM

ECharts と Java インターフェイス: 折れ線グラフ、棒グラフ、円グラフなどの統計グラフを迅速に実装する方法。特定のコード例が必要です。インターネット時代の到来により、データ分析の重要性がますます高まっています。統計グラフは非常に直感的で強力な表示方法であり、データをより明確に表示できるため、データの意味やパターンをより深く理解できるようになります。 Java 開発では、ECharts と Java インターフェイスを使用して、さまざまな統計グラフをすばやく表示できます。 ECharts は Baidu によって開発されたソフトウェアです

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 でカレンダー チャートを使用する方法を紹介し、具体的なコード例を示します。まず、使用する必要があります

ECharts と golang テクニカル ガイド: さまざまな統計グラフを作成するための実践的なヒント ECharts と golang テクニカル ガイド: さまざまな統計グラフを作成するための実践的なヒント Dec 17, 2023 pm 09:56 PM

ECharts および golang テクニカル ガイド: さまざまな統計チャートを作成するための実践的なヒント、具体的なコード例が必要です はじめに: 最新のデータ視覚化の分野では、統計チャートはデータ分析と視覚化のための重要なツールです。 ECharts は強力なデータ視覚化ライブラリですが、golang は高速で信頼性が高く、効率的なプログラミング言語です。この記事では、ECharts と golang を使用してさまざまな種類の統計グラフを作成する方法を紹介し、このスキルを習得するのに役立つコード例を示します。準備

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

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

ECharts と PHP インターフェイスを使用して統計グラフを生成する方法 ECharts と PHP インターフェイスを使用して統計グラフを生成する方法 Dec 18, 2023 pm 01:47 PM

ECharts と PHP インターフェイスを使用して統計グラフを生成する方法 はじめに: 最新の Web アプリケーション開発において、データの視覚化は非常に重要なリンクであり、データを直観的に表示および分析するのに役立ちます。 ECharts は、強力なオープンソースの JavaScript チャート ライブラリであり、さまざまなチャート タイプと豊富なインタラクティブ機能を提供し、さまざまな統計チャートを簡単に生成できます。この記事では、ECharts と PHP インターフェイスを使用して統計グラフを生成する方法と、具体的なコード例を紹介します。 1. EChaの概要

See all articles