// Create a ValueRangePalette to present Heatmap's data.
        private ValueRangePalette CreatePalette(IntensityGridSeries series)
        {
            // 2. Creating palette for IntensityGridSeries.
            var palette = new ValueRangePalette(series);

            // 3. LightningChart has some preset values for palette steps.
            // Clear the preset values from palette before setting new ones.
            foreach (var step in palette.Steps)
            {
                step.Dispose();
            }
            palette.Steps.Clear();

            // 4. Adding steps into palette.
            // Palette is used for presenting data in Heat Map with different colors based on their value.
            palette.Steps.Add(new PaletteStep(palette, Color.FromRgb(0, 0, 255), -25));
            palette.Steps.Add(new PaletteStep(palette, Color.FromRgb(20, 150, 255), 0));
            palette.Steps.Add(new PaletteStep(palette, Color.FromRgb(0, 255, 0), 25));
            palette.Steps.Add(new PaletteStep(palette, Color.FromRgb(255, 255, 20), 50));
            palette.Steps.Add(new PaletteStep(palette, Color.FromRgb(255, 150, 20), 75));
            palette.Steps.Add(new PaletteStep(palette, Color.FromRgb(255, 0, 0), 100));
            palette.Type     = PaletteType.Gradient;
            palette.MinValue = -50;

            // Return the created palette.
            return(palette);
        }
Example #2
0
        // Create a ValueRangePalette to present SurfaceGrid's data.
        private ValueRangePalette CreatePalette(SurfaceGridSeries3D series)
        {
            // Creating palette for SurfaceGridSeries3D.
            var palette = new ValueRangePalette(series);

            // LightningChart has some preset values for palette steps.
            // Clear the preset values from palette before setting new ones.
            foreach (var step in palette.Steps)
            {
                step.Dispose();
            }
            palette.Steps.Clear();

            // Add steps into palette.
            // Palette is used for presenting data in SurfaceGrid with different colors based on their value.
            palette.Steps.Add(new PaletteStep(palette, Color.Blue, -25));
            palette.Steps.Add(new PaletteStep(palette, Color.DodgerBlue, 0));
            palette.Steps.Add(new PaletteStep(palette, Color.LawnGreen, 25));
            palette.Steps.Add(new PaletteStep(palette, Color.Yellow, 50));
            palette.Steps.Add(new PaletteStep(palette, Color.Orange, 75));
            palette.Steps.Add(new PaletteStep(palette, Color.Red, 100));
            palette.Type     = PaletteType.Gradient;
            palette.MinValue = -50;

            // Return the created palette.
            return(palette);
        }
Example #3
0
        /// <summary>
        /// 设置调色板的颜色区间
        /// </summary>
        /// <param name="ownerSeries"></param>
        /// <param name="valueMin"></param>
        /// <param name="valueMax"></param>
        /// <returns></returns>
        private ValueRangePalette CreatePalette(IntensityGridSeries ownerSeries, double valueMin, double valueMax)
        {
            ValueRangePalette palette = new ValueRangePalette(ownerSeries);

            palette.Steps.Clear();
            ExampleUtils.DisposeAllAndClear(palette.Steps);
            double valueStep = (valueMax - valueMin) / 20.0;

            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(0, 17, 190), valueMin));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(0, 17, 190), valueMin + valueStep * 2));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(0, 151, 255), valueMin + valueStep * 3));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(0, 221, 151), valueMin + valueStep * 4));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(34, 236, 85), valueMin + valueStep * 5));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(84, 255, 51), valueMin + valueStep * 6));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(135, 255, 17), valueMin + valueStep * 7));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(169, 255, 0), valueMin + valueStep * 8));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(204, 255, 0), valueMin + valueStep * 9));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(255, 255, 0), valueMin + valueStep * 10));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(255, 204, 0), valueMin + valueStep * 11));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(255, 170, 0), valueMin + valueStep * 12));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(255, 136, 0), valueMin + valueStep * 13));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(255, 92, 0), valueMin + valueStep * 14));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(255, 51, 0), valueMin + valueStep * 15));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(255, 36, 0), valueMin + valueStep * 16));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(255, 56, 56), valueMin + valueStep * 17));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(255, 115, 171), valueMin + valueStep * 18));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(255, 170, 238), valueMin + valueStep * 19));
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(255, 220, 255), valueMin + valueStep * 20));
            palette.Type     = PaletteType.Gradient;
            palette.MinValue = valueMin;

            return(palette);
        }
Example #4
0
        // Create chart instance.
        public void CreateChart()
        {
            // Create chart.
            _chart = new LightningChartUltimate();

            // Set chart control into the parent container.
            _chart.Parent = this;
            _chart.Dock   = DockStyle.Fill;

            // Disable rendering before updating chart properties to improve performance
            // and to prevent unnecessary chart redrawing while changing multiple properties.
            _chart.BeginUpdate();

            // 1. Set View3D as active view and set Y-axis range.
            _chart.ActiveView = ActiveView.View3D;
            _chart.View3D.YAxisPrimary3D.SetRange(-50, 100);

            // Set a LegendBox into a chart with vertical layout.
            _chart.View3D.LegendBox.Layout = LegendBoxLayout.Vertical;

            // 2. Create a new SurfaceGrid instance as SurfaceGridSeries3D.
            _surfaceGrid = new SurfaceGridSeries3D(_chart.View3D, Axis3DBinding.Primary, Axis3DBinding.Primary, Axis3DBinding.Primary);

            // 3. Set range, size and color saturation options for SurfaceGrid.
            _surfaceGrid.RangeMinX = MinX;
            _surfaceGrid.RangeMaxX = MaxX;
            _surfaceGrid.RangeMinZ = MinZ;
            _surfaceGrid.RangeMaxZ = MaxZ;
            _surfaceGrid.SizeX     = _columns;
            _surfaceGrid.SizeZ     = _rows;

            // Stronger colors.
            _surfaceGrid.ColorSaturation = 80;

            // 4. Create ValueRangePalette for coloring SurfaceGrid's data.
            ValueRangePalette palette = CreatePalette(_surfaceGrid);

            _surfaceGrid.ContourPalette = palette;

            // 5. Define WireFrameType and ContourLineType for SurfaceGrid.
            _surfaceGrid.WireframeType    = SurfaceWireframeType3D.WireframePalettedByY;
            _surfaceGrid.ContourLineType  = ContourLineType3D.ColorLineByY;
            _surfaceGrid.ContourLineWidth = 2;

            // Add SurfaceGridSeries to chart.
            _chart.View3D.SurfaceGridSeries3D.Add(_surfaceGrid);

            #region Hidden polishing
            // Customize chart.
            CustomizeChart(_chart);
            #endregion

            // Call EndUpdate to enable rendering again.
            _chart.EndUpdate();
        }
        private ValueRangePalette CreatePalette(SeriesBase3D ownerSeries, double valueMax)
        {
            ValueRangePalette palette = new ValueRangePalette(ownerSeries);

            palette.Steps.Clear();
            palette.MinValue = 0;
            palette.Type     = PaletteType.Gradient;
            palette.Steps.Add(new PaletteStep(palette, Colors.Blue, 0));
            palette.Steps.Add(new PaletteStep(palette, Colors.Green, valueMax * 0.3));
            palette.Steps.Add(new PaletteStep(palette, Colors.Yellow, valueMax * 0.6));
            palette.Steps.Add(new PaletteStep(palette, Colors.Red, valueMax));
            return(palette);
        }
        /// <summary>
        /// 创建强度多色阶调色板
        /// </summary>
        /// <param name="ownerSeries">父</param>
        /// <param name="yRange">y值范围</param>
        /// <returns></returns>
        private ValueRangePalette CreatePalette(IntensitySeriesBase ownerSeries, double yRange)
        {
            ValueRangePalette palette = new ValueRangePalette(ownerSeries);

            DisposeAllAndClear(palette.Steps);
            palette.Steps.Add(new PaletteStep(palette, Colors.Black, 0));
            palette.Steps.Add(new PaletteStep(palette, Colors.Lime, 30 * yRange / 100.0));
            palette.Steps.Add(new PaletteStep(palette, Colors.Yellow, 60.0 * yRange / 100.0));
            palette.Steps.Add(new PaletteStep(palette, Colors.Red, 100.0 * yRange / 100.0));
            palette.Type = PaletteType.Gradient;

            return(palette);
        }
Example #7
0
        private ValueRangePalette CreatePalette(SeriesBaseXY ownerSeries, double min, double max)
        {
            ValueRangePalette palette = new ValueRangePalette(ownerSeries);
            double            range   = max - min;

            palette.Steps.Clear();
            palette.Steps.Add(new PaletteStep(palette, Color.FromRgb(0, 0, 0), min));
            palette.Steps.Add(new PaletteStep(palette, Color.FromRgb(0, 0, 255), min + 1 * range / 6));
            palette.Steps.Add(new PaletteStep(palette, Color.FromRgb(0, 255, 255), min + 2 * range / 6));
            palette.Steps.Add(new PaletteStep(palette, Color.FromRgb(0, 255, 0), min + 3 * range / 6));
            palette.Steps.Add(new PaletteStep(palette, Color.FromRgb(255, 255, 0), min + 4 * range / 6));
            palette.Steps.Add(new PaletteStep(palette, Color.FromRgb(255, 0, 0), min + 5 * range / 6));
            palette.Steps.Add(new PaletteStep(palette, Color.FromRgb(255, 0, 255), max));
            palette.Type     = PaletteType.Gradient;
            palette.MinValue = min;
            return(palette);
        }
        private ValueRangePalette CreatePalette(SeriesBase3D ownerSeries, double max)
        {
            ValueRangePalette palette = new ValueRangePalette(ownerSeries);

            palette.Steps.Clear();

            //Transparent value for 'invalid' points. They are way below this value and thus become transparent
            palette.Steps.Add(new PaletteStep(palette, Color.FromArgb(0, 0, 0, 0), -0.01));

            //Actual steps
            palette.Steps.Add(new PaletteStep(palette, Colors.Blue, 0));
            palette.Steps.Add(new PaletteStep(palette, Colors.Green, max * 0.3));
            palette.Steps.Add(new PaletteStep(palette, Colors.Yellow, max * 0.6));
            palette.Steps.Add(new PaletteStep(palette, Colors.Red, max));
            palette.Type = PaletteType.Gradient;

            return(palette);
        }