Profile Picture

Help on coding 3d surface mesh chart

Posted By lian jia jie 7 Years Ago
Author
Message
Nevron Support
Posted 6 Years Ago
View Quick Profile
Supreme Being

Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)

Group: Forum Members
Last Active: Today @ 1:54 AM
Posts: 3,054, Visits: 4,009
Hi,
Yes - you can use:
xScale.InflateContentRange = false;


Best Regards,
Nevron Support Team



lian jia jie
Posted 6 Years Ago
View Quick Profile
Forum Newbie

Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)

Group: Forum Members
Last Active: 6 Years Ago
Posts: 8, Visits: 89
https://www.nevron.com/forum/uploads/images/ddf36aa9-ad9a-40a3-bc10-2c0.jpeg
By any chance, is there any way to remove the white spaces around the chart ?

bob milanov
Posted 7 Years Ago
View Quick Profile
Supreme Being

Supreme Being (152 reputation)Supreme Being (152 reputation)Supreme Being (152 reputation)Supreme Being (152 reputation)Supreme Being (152 reputation)Supreme Being (152 reputation)Supreme Being (152 reputation)Supreme Being (152 reputation)Supreme Being (152 reputation)

Group: Forum Members
Last Active: 6 Months Ago
Posts: 153, Visits: 11
Hi,
The grid surface series does not support data labels directly for performance reasons. However you can mix the grid surface series with several invisible bar series that are used to show those labels - for example the following code shows how to create several invisible bar series that show up only value labels:

NChart chart = nChartControl1.Charts[0];
chart.Enable3D = true;
chart.Projection.SetPredefinedProjection(PredefinedProjection.PerspectiveTilted);
chart.Width = chart.Height = chart.Depth = 50;

NOrdinalScaleConfigurator xScale = chart.Axis(StandardAxis.PrimaryX).ScaleConfigurator as NOrdinalScaleConfigurator;
xScale.AutoLabels = false;
xScale.Labels.Add("A");
xScale.Labels.Add("B");
xScale.Labels.Add("C");

NOrdinalScaleConfigurator yScale = chart.Axis(StandardAxis.Depth).ScaleConfigurator as NOrdinalScaleConfigurator;
yScale.AutoLabels = false;
yScale.Labels.Add("X");
yScale.Labels.Add("Y");
yScale.Labels.Add("Z");

NBarSeries bar1 = new NBarSeries();
bar1.Values.Add(10);
bar1.Values.Add(20);
bar1.Values.Add(30);
bar1.FillStyle = new NColorFillStyle(Color.Transparent);
bar1.BorderStyle.Width = new NLength(0);
chart.Series.Add(bar1);

NBarSeries bar2 = new NBarSeries();
bar2.Values.Add(12);
bar2.Values.Add(22);
bar2.Values.Add(32);
bar2.FillStyle = new NColorFillStyle(Color.Transparent);
bar2.BorderStyle.Width = new NLength(0);
chart.Series.Add(bar2);

NBarSeries bar3 = new NBarSeries();
bar3.Values.Add(15);
bar3.Values.Add(25);
bar3.Values.Add(35);
bar3.FillStyle = new NColorFillStyle(Color.Transparent);
bar3.BorderStyle.Width = new NLength(0);
chart.Series.Add(bar3);

Hope this helps - let us know if you meet any problems or have any questions.

lian jia jie
Posted 7 Years Ago
View Quick Profile
Forum Newbie

Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)

Group: Forum Members
Last Active: 6 Years Ago
Posts: 8, Visits: 89
I would like the Z-values to show up above each data point in the surface chart like how the value shows up in the bar chart in my previous reply.

Nevron Support
Posted 7 Years Ago
View Quick Profile
Supreme Being

Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)

Group: Forum Members
Last Active: Today @ 1:54 AM
Posts: 3,054, Visits: 4,009
Hi,
Yes it applies to surface charts - in fact the code applies to any type of chart which uses an ordinal axis. By default the x and depth axes are configured as ordinal so the code is the same.

Best Regards,
Nevron Support Team



lian jia jie
Posted 7 Years Ago
View Quick Profile
Forum Newbie

Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)

Group: Forum Members
Last Active: 6 Years Ago
Posts: 8, Visits: 89
What if i like to label the z value of a surface chart like the one i did in the previous replies? Does the chart control provide the same label functionality for surface chart? Thank you.

Nevron Support
Posted 7 Years Ago
View Quick Profile
Supreme Being

Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)

Group: Forum Members
Last Active: Today @ 1:54 AM
Posts: 3,054, Visits: 4,009
Hi Lian,
Yes sure - the following code shows how to display a chart similar to the one you attached:

   NChart chart = nChartControl1.Charts[0];
   chart.Enable3D = true;
   chart.Projection.SetPredefinedProjection(PredefinedProjection.PerspectiveTilted);
   chart.Width = chart.Height = chart.Depth = 50;

   NOrdinalScaleConfigurator xScale = chart.Axis(StandardAxis.PrimaryX).ScaleConfigurator as NOrdinalScaleConfigurator;
   xScale.AutoLabels = false;
   xScale.Labels.Add("A");
   xScale.Labels.Add("B");
   xScale.Labels.Add("C");

   NOrdinalScaleConfigurator yScale = chart.Axis(StandardAxis.Depth).ScaleConfigurator as NOrdinalScaleConfigurator;
   yScale.AutoLabels = false;
   yScale.Labels.Add("X");
   yScale.Labels.Add("Y");
   yScale.Labels.Add("Z");

   NBarSeries bar1 = new NBarSeries();
   bar1.Values.Add(10);
   bar1.Values.Add(20);
   bar1.Values.Add(30);
   chart.Series.Add(bar1);

   NBarSeries bar2 = new NBarSeries();
   bar2.Values.Add(12);
   bar2.Values.Add(22);
   bar2.Values.Add(32);
   chart.Series.Add(bar2);

   NBarSeries bar3 = new NBarSeries();
   bar3.Values.Add(15);
   bar3.Values.Add(25);
   bar3.Values.Add(35);
   chart.Series.Add(bar3);

   NStyleSheet.CreatePredefinedStyleSheet(PredefinedStyleSheet.Bright).Apply(nChartControl1.Document);

Hope this helps - let us know if you have any questions.


Best Regards,
Nevron Support Team



lian jia jie
Posted 7 Years Ago
View Quick Profile
Forum Newbie

Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)Forum Newbie (0 reputation)

Group: Forum Members
Last Active: 6 Years Ago
Posts: 8, Visits: 89
Is there any way to create a label to show the z value of each sensor like the picture below as I want to see the changing value over time. Thank you.
https://www.nevron.com/forum/uploads/images/2864d6b4-7395-4656-9e43-ce7c.png



Nevron Support
Posted 7 Years Ago
View Quick Profile
Supreme Being

Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)Supreme Being (4,435 reputation)

Group: Forum Members
Last Active: Today @ 1:54 AM
Posts: 3,054, Visits: 4,009
Hi,
Currently the code will add a new surface series to each timer tick - what you need to ensure is that the chart contains only one surface series and then clear / update the data - for example:

   NGridSurfaceSeries surface = null;

   if (chart.Series.Count > 0)
   {
    surface = chart.Series[0] as NGridSurfaceSeries;
   }
   
   if (surface == null)
   {
     surface = (NGridSurfaceSeries)chart.Series.Add(SeriesType.GridSurface);
   }

then after you're done updating the data you need to call:
nChartControl.Refresh();

There is no need to call refresh on a separate timer. Hope this helps let us know if you meet any problems or have any questions.


Best Regards,
Nevron Support Team





Similar Topics


Reading This Topic