0

我正在尝试绘制一个阈值(从左到右的 1 条线)。为此,我将阈值添加了两次,xValues 的值分别为 0 和 1,然后将 X 的比例设置为从 0 到 1。

public  static void AddThreshold(Chart xlChart, double value, string name, int color, bool secondary)
        {
            Series series = xlChart.SeriesCollection().NewSeries();
            series.Name = name;
            series.XValues = new List<int>() { 0, 1 }.ToArray();
            series.Values = new List<double>() { value, value }.ToArray();

            Axis xAxis, yAxis;

            if (secondary)
            {
                series.AxisGroup = XlAxisGroup.xlSecondary;

                xAxis = (Axis)xlChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlSecondary);
                yAxis = (Axis)xlChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlSecondary);
            }
            else
            {
                xAxis = (Axis)xlChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
                yAxis = (Axis)xlChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary);
            }

            xAxis.MinimumScale = 0;//getting COM error here
            xAxis.MaximumScale = 1;

            yAxis.Delete();

            series.ChartType = XlChartType.xlXYScatterLinesNoMarkers;
            series.MarkerSize = 3;
            series.Border.LineStyle = XlMarkerStyle.xlMarkerStyleDash;
            series.Border.Color = color;
        }

但我总是遇到 COM 错误,无法找出问题所在。为了让事情更烦人,确切的方法是在不同的项目中工作(不要问它,因为那里的代码被错误地部分删除了,我没有重写它)。

4

1 回答 1

2

如果轴不是值类型的轴,则无法设置轴的最小值和最大值,并且只有 XY 散点图具有作为值轴的 X 轴。在设置轴刻度之前,您需要将添加的系列的图表类型指定为 XY Scatter。

所以移动这个:

series.ChartType = XlChartType.xlXYScatterLinesNoMarkers;

在此之上:

xAxis.MinimumScale = 0;
于 2014-10-12T13:32:57.363 回答