2

アプリケーションで Nevron Charting Control ver.11.1.17.12 を使用しています。でチャートを正しく描画する際に問題に直面していDateTimeScaleConfiguratorます。ここに次の問題があります:

  1. シリーズ数が増えると、シリーズ バーが互いに重なります。
  2. 軸線から出るシリーズ。
  3. X Axis Scale は、スケールに前年Decemberと翌年を自動的に追加Janします。これにより、Surface Chart の場合、チャートに空白の領域ができます。

// バー チャート シリーズを描画するコード スニペット

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;

生成された出力は次のとおりです。 軸ラベル外の棒グラフ

前年と翌年の縮尺を表示しないようにする

この問題に関する任意のアイデアは、深く感謝されます。

前もって感謝します。

4

1 に答える 1

1

シリーズ数が増えると、シリーズ バーが互いに重なります。
&

シリーズ バーが軸線から外れています。

回答:カテゴリ データを使用している場合は、NOrdinalScaleConfiguratorではなくを使用しますNDateTimeScaleConfigurator。それは問題を解決せず、シリーズ バーをスケールの中央に配置し、チャート サイズに合わせて自動サイズ変更します。

X Axis Scale は、前年の 12 月と翌年の 1 月をスケールに自動的に追加します。

回答: の次のプロパティDateTimeScaleConfiguratorを false に設定して、このような動作を回避します。

 dateTimeScale.RoundToTickMax = false;
 dateTimeScale.RoundToTickMin = false;
于 2012-07-30T07:25:39.993 に答える