Составьте список строк в oxyplot, где YAxis - строки, а XAxis - целое число. - PullRequest
2 голосов
/ 02 марта 2020

У меня есть список, содержащий Object Chip (), и я хотел бы построить каждое значение в линейной оси.

Объект

public ChipPoint(double x, string y, Chip chip)
{
    X = x;
    Y_string = y;
    Value = double.NaN;
    Chip = chip;
}

Я сейчас назначаю источник предметов для Объекта, но, похоже, он не отображает его правильно:

/// <summary>Sets the data displayed by the series based on the given data.</summary>
/// <param name="series">The <see cref="XYAxisSeries"/> that should display the data.</param>
/// <param name="data">A collection of <see cref="TestDataPoint"/> that should be displayed.</param>
/// <param name="allPoints">A collection of <see cref="TestDataPoint"/> containing all possible points.</param>
protected override void SetSeriesData(
     XYAxisSeries series,
    IEnumerable<TestDataPoint> data,
    IEnumerable<TestDataPoint> allPoints)
{
    Data = data;
    if (data.Where(d => d.CanConvertToDouble).Count() < 1)
    {
        //CreateAxes(); 
        series.ItemsSource = data
        .Select(p => new ChipPoint(p.Chip.Id, p.StringValue, p.Chip))
        .ToList();

        Model.Axes.Clear();

        // create the X axis (chips)
        XAxis = new LinearAxis();
        XAxis.Title = "Chip";
        XAxis.Position = AxisPosition.Bottom;
        XAxis.MajorGridlineColor = OxyColors.Gray;
        XAxis.MajorGridlineStyle = LineStyle.Dash;
        XAxis.MajorGridlineThickness = 1;
        XAxis.MinorGridlineColor = OxyColors.LightGray;
        XAxis.MinorGridlineStyle = LineStyle.Dash;
        XAxis.MinorGridlineThickness = 1;

        // chips are integers
        XAxis.MinimumMajorStep = 1;
        XAxis.MinimumMinorStep = 1;

        Model.Axes.Add(XAxis);

        YAxis = new LinearAxis();
        YAxis.Title = "Value";
        YAxis.Position = AxisPosition.Left;
        YAxis.MajorGridlineColor = OxyColors.Gray;
        YAxis.MajorGridlineStyle = LineStyle.Dash;
        YAxis.MajorGridlineThickness = 1;

        YAxis.IntervalLength = 20;
        YAxis.MinorTickSize = 0;
        YAxis.MinimumMajorStep = 0.0000001;

        Model.Axes.Add(YAxis);

        return;
    }

    CreateAxes();
    series.ItemsSource = data
        .Select(p => new ChipPoint(
            p.Chip.Id,
            p.DoubleValue,
            p.Chip))
        .ToList();
}

График имеет:

Plot example

YAxis должен иметь не двойное значение, а строковое значение в зависимости от того, какое значение имеет каждая точка.

У кого-нибудь из вас есть какие-нибудь предложения?

...