Назначение двух осей Y двум линейным рядам в oxyplot (C# WPF)

Я искал ответ на этот вопрос повсюду, но находил только старые ответы, связанные с Windows Forms, а не с WPF. В документации ничего не упоминается.

У меня есть два линейных ряда, которые я рисую с помощью oxyplot. Однако я не могу назначить каждую серию на отдельную ось (мне нужно две из-за разного масштаба).

В найденных примерах указано, что нужно присвоить key="somename" определению оси и YAxisKey="somename" ряду строк. Однако мне выдается сообщение об ошибке, что этих свойств не существует. Любая помощь приветствуется. См. код xaml, прикрепленный ниже

<Wpf:Plot    
    DockPanel.Dock="Bottom"
    x:Name="OxyPlot1" 
    Title="{Binding Title}" Height="400" Margin="0,0,0,0">

    <Wpf:Plot.Axes>        
        <Wpf:LinearAxis
            x:Name="Psiaxis" Position="Left" Title="Pressure (PSI)"
            TickStyle="Inside" StartPosition="0"/>
        <Wpf:LinearAxis
            x:Name="Gpmaxis" Position="Right" Title="Flow In (GPM)"
            TickStyle="Inside" StartPosition="0"/>
        <Wpf:DateTimeAxis
            Position="Bottom" TickStyle="Inside" IntervalType="Seconds" 
            MinorGridlineStyle="Dash" MajorGridlineStyle="Solid"
            StringFormat="dd:MM:yyyy HH:mm:ss"/>
        </Wpf:Plot.Axes>

        <Wpf:LineSeries 
            x:Name="SelectedPointsPressure"
            Height="100" 
            Width="100" 
            Title="Pressure (psi)"
            ItemsSource="{Binding ToPlotPoints1}"/>

        <Wpf:LineSeries
            x:Name="RegressionPoints"
            Height="100"
            Width="100"
            LineStyle="Solid"
            Color="Blue"
            Title="Linear least squares fit"
            ItemsSource="{Binding ToPlotPoints2}"/>

        <Wpf:LineSeries 
            x:Name="SelectedPointsFlowin"
            Height="100" 
            Width="100" 
            LineStyle="Solid"
            Color="Green"
            Title="Flow In (gpm)"
            ItemsSource="{Binding ToPlotPoints3}"/>
    </Wpf:Plot>

person Henrik_er    schedule 16.05.2017    source источник


Ответы (1)


Вы должны определить ключевое свойство для каждой оси Y.

<oxyWpf:LinearAxis x:Name="Psiaxis" Position="Left" 
        Title="Pressure (PSI)" TickStyle="Inside" StartPosition="0"  Key="Psiaxis"   />

И благодаря этому вы можете установить YAxisKey

<oxyWpf:LineSeries
        x:Name="RegressionPoints"
        Height="100"
            YAxisKey="Psiaxis"
        Width="100"
        LineStyle="Solid"
        Color="Blue"
        Title="Linear least squares fit"
        ItemsSource="{Binding PointsSeries2}"/>
person rraszewski    schedule 16.05.2017
comment
Спасибо за быстрое продолжение, это именно то, что я пробовал, но для ключевой визуальной студии выдается следующее сообщение об ошибке при наведении курсора на ключ: свойство «Ключ» не найдено в типе «LinearAxis». Не удается разрешить ключ символа. При наведении курсора на =Psiaxis он говорит мне: ключ члена не распознан или недоступен. - person Henrik_er; 16.05.2017
comment
Какую версию oxyplot вы используете? Я использовал OxyPlot.Wpf version=1.0.0, а ключ является членом OxyPlot.Wpf.Axis. Обратите внимание, что это Key с Заглавная буква. - person rraszewski; 16.05.2017
comment
У меня была предварительная версия. Я удалил его с помощью nuget и установил 1.0.0. Теперь они работают с ключом = и т. д., однако я получаю это сообщение об ошибке при попытке построить решение: FileLoadException: не удалось загрузить файл или сборку «OxyPlot, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = 638079a8f0bd61e9» или один из его зависимости. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) Я попытался переустановить версию, но это не помогло. Также добавлено/удалено из nuget/references. Любые идеи? - person Henrik_er; 16.05.2017
comment
Вышеупомянутая проблема с внутренним исключением решена путем удаления ссылок на oxyplot в файле приложения в папке решения. - person Henrik_er; 17.05.2017