3D サーフェス グリッド チャート

ワイヤーフレームと等高線の使用

製品情報チャート一覧

LightningChart は、3D サーフェスを表示するための 2 つの異なる方法があります。SurfaceGridSeries3D では、X と Z 空間においてノードが等間隔に配置されています。もう一方の SurfaceMeshSeries3D では、3D 空間でノードを自由に配置できます。

このチュートリアルでは、LightningChart の SurfaceGridSeries3D を使用して、ワイヤーフレームと等高線付きの 3D サーフェス グリッド チャートを作成する方法を紹介します。SurfaceGridにより、データを 3D サーフェスとして視覚化でき、データやデータの変動の表示、測定、検証に使用できます。

また、このチュートリアルでは、値に応じて異なる色でデータを表示するためのパレットを使用します。カラー パレットに関する詳細は、「シンプルな 2D (XY) ヒートマップ チャート」 で紹介していますので、ご参照ください。


作成手順

  1. このチュートリアルでは、簡単な使用と分かりやすいコードを記述する事を目的に、いくつかの変数を事前に定義します。
    Form または MainWindow クラス内で、以下のように変数を定義します。

                /// <summary>
                /// LightningChart コンポーネント
                /// </summary>
                private LightningChartUltimate _chart = null;
                
                /// <summary>
                /// SurfaceGrid 系列の参照
                /// </summary>
                private SurfaceGridSeries3D _surfaceGrid = null;
                
                /// <summary>
                /// SurfaceGrid 行
                /// </summary>
                int _rows = 500;
                
                ///<summary>
                /// SurfaceGrid 列
                ///</summary>
                int _columns = 500;
                
                /// <summary>
                /// X 軸の最小値
                /// </summary>
                private const int MinX = 0;
                
                /// <summary>
                /// X 軸の最大値
                /// </summary>
                private const int MaxX = 100;
                
                /// <summary>
                /// Z 軸の最小値
                /// </summary>
                private const int MinZ = 0;
                
                /// <summary>
                /// Z 軸の最大値
                /// </summary>
                private const int MaxZ = 100;
                    
  2. View3D をアクティブなビューとして定義し、Y 軸の範囲を定義します。

                // View3D をアクティブなビューとして定義して Y 軸の範囲を定義
                _chart.ActiveView = ActiveView.View3D;
                _chart.View3D.YAxisPrimary3D.SetRange(-50, 100);
            
  3. SurfaceGridSeries3D として SurfaceGrid インスタンスを新たに作成します。

                // SurfaceGridSeries3D として SurfaceGrid インスタンスを新たに作成
                _surfaceGrid = new SurfaceGridSeries3D(_chart.View3D, Axis3DBinding.Primary, Axis3DBinding.Primary, Axis3DBinding.Primary);
            
  4. SurfaceGrid の設定を定義します。

                // SurfaceGrid の範囲、サイズ、彩度オプションを設定
                _surfaceGrid.RangeMinX = MinX;
                _surfaceGrid.RangeMaxX = MaxX;
                _surfaceGrid.RangeMinZ = MinZ;
                _surfaceGrid.RangeMaxZ = MaxZ;
                _surfaceGrid.SizeX = _columns;
                _surfaceGrid.SizeZ = _rows;
                
                // より強力な色
                _surfaceGrid.ColorSaturation = 80;
            
  5. ValueRangePalette を作成して、SurfaceGrid の ContourPalette として設定します。

                // SurfaceGrid データに色を指定する ValueRangePalette の作成
                ValueRangePalette palette = CreatePalette(_surfaceGrid);
                _surfaceGrid.ContourPalette = palette;
            
  6. SurfaceGrid のワイヤーフレームと等高線を定義します。

                // SurfaceGrid のワイヤーフレームと等高線を定義
                _surfaceGrid.WireframeType = SurfaceWireframeType3D.WireframePalettedByY;
                _surfaceGrid.ContourLineType = ContourLineType3D.ColorLineByY;
                _surfaceGrid.ContourLineWidth = 2;
            
  7. データを生成します。

                // データを生成
                public void GenerateData(int columns, int rows)
                {
                    // データを格納するための変数を作成
                    double data = 0;
                
                    // パフォーマンスを向上して複数のプロパティを変更中に不必要なチャートの再描画を防ぐためにチャート更新前のレンダリングを無効化
                    _chart.BeginUpdate();
                
                    // データ値を設定して SurfaceGrid に追加
                    for (int i = 0; i < _columns; i++)
                    {
                        for (int j = 0; j < _rows; j++)
                        {
                            // SurfacePoints として SurfaceGrid に値を追加
                            // 点は以下の関数に基づいて散布される
                            data = 30.0 + 8 * Math.Cos(20 + 0.0001 * (double)(i * j)) + 60.0 * Math.Cos((double)(j - i) * 0.01);
                            _surfaceGrid.Data[i, j].Y = data;
                        }
                    }
                
                    // 更新されたデータをチャートに通知
                    _surfaceGrid.InvalidateData();
                
                    // EndUpdate を呼び出してレンダリングを再開
                    _chart.EndUpdate();
                }
            
  8. アプリケーションをビルドおよび実行します。


ライセンス体系、価格、お見積り依頼、ご購入前の技術的なお問い合わせなど、本製品に関するご質問、ご不明な点はエクセルソフトまでお気軽にお問い合わせください。

お問い合わせ


ページトップへ