C# Excel Chart не может установить масштаб серии

Я пытаюсь нарисовать порог (1 линия слева направо). Для этого я добавляю пороговое значение дважды, а значения 0 и 1 для значений xValues ​​затем устанавливаю масштаб 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 и не могу понять проблему. Чтобы сделать вещи более раздражающими, точный метод работал в другом проекте (не спрашивайте об этом, потому что код был частично удален по ошибке, и я не переписываю его).

1 ответ

Решение

Вы не можете установить минимальное и максимальное значения оси, если это не ось типа значения, и только точечные диаграммы XY имеют ось X, которая является осью значения. Вам нужно указать тип диаграммы добавленной серии как XY Scatter перед настройкой масштаба оси.

Итак, переместите это:

series.ChartType = XlChartType.xlXYScatterLinesNoMarkers;

выше этого:

xAxis.MinimumScale = 0;
Другие вопросы по тегам