Nevron条形图与DateTimeScale Configurator奇怪的系列绘图?

时间:2012-05-29 08:08:05

标签: winforms charts nevron

我在应用程序中使用Nevron Charting Control ver.11.1.17.12。我在使用DateTimeScaleConfigurator绘制图表时遇到问题。以下是以下问题:

  1. 如果系列计数增加,系列栏会相互重叠。
  2. 系列走出轴线。
  3. X轴比例自动将上一年December和明年Jan添加到比例表中,这会导致图表在表面图表中具有空白区域。
  4. //绘制条形图系列的代码片段

    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());
    }
    

    添加曲面图系列的代码段

    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();
    

    ScaleConfigurator配置

    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;
    

    以下是生成的输出: Bar Chart Out of Axis Labels

    prevent to show previous and next year in scale

    对此问题的任何想法都将深表感谢。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

  

如果系列计数增加,系列栏会相互重叠   &安培;
       系列栏离开轴线。

答案:当您使用分类数据时,请使用NOrdinalScaleConfigurator而不是NDateTimeScaleConfigurator。它不会解决问题,并将系列条放在刻度的中心,并根据图表大小自动调整它们。

  

X轴比例自动添加去年12月和明年   Jan表示在图表中有空白区域的比例   表面图。

答案:DateTimeScaleConfigurator的以下属性设置为false以避免此类行为。

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