winformschartsnevron

Nevron BarChart with DateTimeScaleConfigurator weired series plotting?


I am using Nevron Charting Control ver.11.1.17.12 in application. I am facing problem in drawing the chart correct with the DateTimeScaleConfigurator. Here are following problem:

  1. Series Bar overlapping each other if series count increases.
  2. Series getting out of the Axis lines.
  3. X Axis Scale automatically add previous year December and next year Jan in the scale which cause the chart to have blank area in case of Surface Chart.

//code snippet to draw Bar Chart Series

NBarSeries bar = new NBarSeries();
bar.UniqueId = new Guid(outputVariable.UniqueId);
bar.Name = outputVariable.LegendText;
chart.Series.Add(bar);
bar.HasBottomEdge = false;
bar.MultiBarMode = chart.Series.Count == 1 ? MultiBarMode.Series : MultiBarMode.Clustered;                   
// bar.InflateMargins = true;
bar.UseZValues = false;

indexOfSeries = chart.Series.IndexOf(bar);
ConfigureChartSeries(bar, indexOfSeries, outputVariable);
SetSeriesAxisInformation(bar, outputVariable.Unit);
bar.UseXValues = true;
foreach (DataRow row in seriesDataTable.Rows)
{
   bar.XValues.Add(Convert.ToDateTime(row["TimeStamp"]).ToOADate());
}

code snippet to Add Surface Chart Series

chart.Enable3D = true;
 chart.BoundsMode = BoundsMode.Stretch;
 (chart as NCartesianChart).Fit3DAxisContent = true;               
 chart.Projection.SetPredefinedProjection(PredefinedProjection.OrthogonalTop);
 chart.LightModel.EnableLighting = false;                   
 chart.Wall(ChartWallType.Back).Visible = false;
 chart.Wall(ChartWallType.Left).Visible = false;
 chart.Wall(ChartWallType.Floor).Visible = false;
 // setup Y axis
 chart.Axis(StandardAxis.PrimaryY).Visible = false;                
 // setup Z axis
 NAxis axisZ = chart.Axis(StandardAxis.Depth);
 axisZ.Anchor = new NDockAxisAnchor(AxisDockZone.TopLeft);
 NLinearScaleConfigurator scaleZ = new NLinearScaleConfigurator();
 scaleZ.InnerMajorTickStyle.Visible = false;
 scaleZ.MajorGridStyle.ShowAtWalls = new ChartWallType[0];
 scaleZ.RoundToTickMin = false;
 scaleZ.RoundToTickMax = false;
 axisZ.ScaleConfigurator = scaleZ;
 axisZ.Visible = true;

 // add a surface series
 NGridSurfaceSeries surface = new NGridSurfaceSeries();
 surface.UniqueId = new Guid(outputVariable.UniqueId);
 surface.Name = outputVariable.LegendText;
 chart.Series.Add(surface);
 surface.Legend.Mode = SeriesLegendMode.SeriesLogic;
 surface.ValueFormatter = new NNumericValueFormatter("0.0");
 surface.FillMode = SurfaceFillMode.Zone;
 surface.FrameMode = SurfaceFrameMode.Contour;
 surface.ShadingMode = ShadingMode.Flat;
 surface.DrawFlat = true;
 // Already set this property to false and working in other chart.
 surface.InflateMargins = false;                    
 surface.FrameColorMode = SurfaceFrameColorMode.Zone;
 surface.SmoothPalette = true;
 surface.Legend.Format = "<zone_value>";
 surface.FillMode = SurfaceFillMode.Zone;
 surface.FrameMode = SurfaceFrameMode.Contour;
 CreateSurfaceSeries(outputVariable, surface);
 chartControl.Refresh();

And the ScaleConfigurator configuration

chartPrimaryXAxis = chart.Axis(StandardAxis.PrimaryX);
// X Axis Configuration
dateTimeScale = new NDateTimeScaleConfigurator();
dateTimeScale.Title.Text = string.Empty;
dateTimeScale.LabelStyle.Angle = new NScaleLabelAngle(ScaleLabelAngleMode.Scale, 90);
dateTimeScale.LabelStyle.ContentAlignment = ContentAlignment.MiddleLeft;
dateTimeScale.LabelStyle.TextStyle.FontStyle = new NFontStyle("Times New Roman", 6);
dateTimeScale.LabelFitModes = new LabelFitMode[] { LabelFitMode.AutoScale };
chartPrimaryXAxis.ScaleConfigurator = dateTimeScale;
chartPrimaryXAxis.ScrollBar.ResetButton.Visible = true;
chartPrimaryXAxis.ScrollBar.ShowSliders = true;
dateTimeScale.EnableUnitSensitiveFormatting = true;

Here is the generated output: Bar Chart Out of Axis Labels

prevent to show previous and next year in scale

Any idea regarding this problem will be deeply appreciated.

Thanks in advance.


Solution

  • Series Bar overlapping each other if series count increases.
    &

    Series bar getting out of the Axis lines.

    Answer: When you are using categorial data then use NOrdinalScaleConfigurator rather than NDateTimeScaleConfigurator. It will not solve the problem and put the series bar in the center of the scale and auto resize them according to the chart size also.

    X Axis Scale automatically add previous year December and next year Jan in the scale which cause the chart to have blank area in case of Surface Chart.

    Answer: Set the following properties of the DateTimeScaleConfigurator to false to avoid such behavior.

     dateTimeScale.RoundToTickMax = false;
     dateTimeScale.RoundToTickMin = false;