XYZ Axis on a surface plot


https://www.nevron.com/Forum/Topic14287.aspx
Print Topic | Close Window

By Luis Baldeon - 3 Years Ago
I'm trying to draw an axis for the surface plot.  I would arrows at the ends and the letters x, y and z.  Is it possible to draw the surface plot so that the axis is in the center?
By Nevron Support - 3 Years Ago
Hi Luis,

Currently, the axes do not support caps in 3D. To cross the axes at some particular value you need to set a cross-axis anchor to each of the axes - the following example shows how to do this:

NChart chart = nChartControl1.Charts[0];
chart.Enable3D = true;

chart.Wall(ChartWallType.Back).Visible = false;
chart.Wall(ChartWallType.Floor).Visible = false;
chart.Wall(ChartWallType.Left).Visible = false;

NAxis xAxis = chart.Axis(StandardAxis.PrimaryX);
NAxis yAxis = chart.Axis(StandardAxis.PrimaryY);
NAxis zAxis = chart.Axis(StandardAxis.Depth);

xAxis.ScaleConfigurator = new NLinearScaleConfigurator();
yAxis.ScaleConfigurator = new NLinearScaleConfigurator();
zAxis.ScaleConfigurator = new NLinearScaleConfigurator();

xAxis.Anchor = new NCrossAxisAnchor(AxisOrientation.Horizontal);
((NCrossAxisAnchor)xAxis.Anchor).Crossings.Add(new NValueAxisCrossing(yAxis, 0));
((NCrossAxisAnchor)xAxis.Anchor).Crossings.Add(new NValueAxisCrossing(zAxis, 0));

yAxis.Anchor = new NCrossAxisAnchor(AxisOrientation.Vertical);
((NCrossAxisAnchor)yAxis.Anchor).Crossings.Add(new NValueAxisCrossing(xAxis, 0));
((NCrossAxisAnchor)yAxis.Anchor).Crossings.Add(new NValueAxisCrossing(zAxis, 0));

zAxis.Anchor = new NCrossAxisAnchor(AxisOrientation.Depth);
((NCrossAxisAnchor)zAxis.Anchor).Crossings.Add(new NValueAxisCrossing(xAxis, 0));
((NCrossAxisAnchor)zAxis.Anchor).Crossings.Add(new NValueAxisCrossing(yAxis, 0));

NGridSurfaceSeries surface = new NGridSurfaceSeries();
chart.Series.Add(surface);
chart.Width = chart.Height = chart.Depth = 50;
surface.XValuesMode = GridSurfaceValuesMode.OriginAndStep;
surface.OriginX = -1;
surface.StepX = 2;
surface.ZValuesMode = GridSurfaceValuesMode.OriginAndStep;
surface.OriginZ = -1;
surface.StepZ = 2;
surface.Data.SetSize(2, 2);

surface.Data.SetValue(0, 0, -1);
surface.Data.SetValue(0, 1, -1);
surface.Data.SetValue(1, 0, 1);
surface.Data.SetValue(1, 1, 1);

nChartControl1.Controller.Tools.Add(new NPanelSelectorTool());
nChartControl1.Controller.Tools.Add(new NTrackballTool());

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