删除额外的 x 轴值

Remove extra x axis values

我在删除 x 列中的额外值时遇到问题。基本上,我的图表不会从 0 开始,也不会在我的最后一个数据点结束。我试过从 0 开始轴,并将间隔偏移设置为 -20(我的间隔是 20)。

有什么方法可以去掉数据两边的额外值吗?

string[] xValues = new string[5] { "QE1", "QE2", "QE3", "QE4", $"{DateTime.Now.ToShortDateString()}" };

        PlotBaselines(xValues);

        var amCost = new Series()
        {
            Name = "AmCost",
            Color = Color.Blue,
            IsVisibleInLegend = true,
            IsXValueIndexed = true,
            ChartType = SeriesChartType.Line
        };
        impairmentGraph.Series.Add(amCost);
        // Test Values 0 - 20
        float[] amCostValues = new float[5] { 5, 15, 20, 13, 6 };
        impairmentGraph.Series["AmCost"].Points.DataBindXY(xValues, amCostValues);

这是一个系列的代码。每个都一样。

impairmentGraph.ChartAreas[0].AxisY.Maximum = 100; impairmentGraph.ChartAreas[0].AxisY.Interval = 20; impairmentGraph.ChartAreas[0].AxisX.IntervalOffset = -20; impairmentGraph.ChartAreas[0].AxisX.IsStartedFromZero = true;

这是我使用的唯一设置代码。

您需要设置 x-axis 的 MinimumMaximum

但是:如果您已将 x-values 添加为 numbers(或日期时间),这 有效 ! 你的不是!

以下更改会有所帮助:

将 xvalues 更改为数字:

 double[] xValues = new double[5] {  1,2,3,4,5 };

将你的标签放在另一个数组中:

 string[] xLabels = new string[5] { "QE1", "QE2", "QE3", "QE4", 
                                    $"{DateTime.Now.ToShortDateString()}" };

绑定数据后需要为DataPoints设置AxisLabels:

 for (int i = 0; i < xValues.Length; i++)
            impairmentGraph.Series["AmCost"].Points[i].AxisLabel = xLabels[i];

现在您可以设置x-axis显示的范围:

 impairmentGraph.ChartAreas[0].AxisX.Minimum = 1;
 impairmentGraph.ChartAreas[0].AxisX.Maximum = 5;

根据我的数据,结果如下所示:

请注意,当您将 x-values 添加为 string 时,它们都将 转换为 double,从而得到 [=48] 的值=]0.0d 所有点。 (一定要在调试器中检查!!)因此你不能再将它们用于 anything;不用于设置范围,也不用于格式化标签或用于馈送 Tooltips 等..

首先将字符串输入 AxisLabels 的事实误导了许多人认为一切都很好,但事实并非如此..

另请注意,我总是选择 List 而不是数组,而且这组相当固定的数据并没有真正从数据绑定中获益,尤其是因为我们无论如何都需要访问每个 DataPoint..