Skip to content

Серия Линии

Вид серии линий (CartesianLineSeriesView) соединяет точки линиями. Серия позволяет отображать или скрывать точечные маркеры, а также регулировать толщину линий и точечных маркеров. На следующей картинке показан контрол диаграммы с двумя рядами линий, каждый из которых рисован своим собственным цветом.

chart-views-line-series-view

Создание представления серии линий

Чтобы создать представление серии линий, добавьте объект CartesianSeries в коллекцию CartesianChart.Series и инициализируйте свойство CartesianSeries.View экземпляром CartesianLineSeriesView.

Используйте свойство CartesianSeries.DataAdapter, чтобы предоставить данные для серии.

Следующий код показывает, как создать представление серии линий в XAML и code-behind.

xmlns:mxc="https://schemas.eremexcontrols.net/avalonia/charts"

<mxc:CartesianChart x:Name="chartControl">
    <mxc:CartesianChart.Series>
        <mxc:CartesianSeries Name="lineSeries1" DataAdapter="{Binding DataAdapter}" >
            <mxc:CartesianLineSeriesView Color="Red" MarkerSize="4" ShowMarkers="True" Thickness="2"/>
        </mxc:CartesianSeries>
    </mxc:CartesianChart.Series>
</mxc:CartesianChart>
using Eremex.AvaloniaUI.Charts;

CartesianSeries series = new CartesianSeries();
chartControl.Series.Add(series);
double[] args = new double[] { 1, 2, 3, 4, 5, 6, 7 };
double[] values = new double[] { 0, 0.4, 1.5, 1.3, 0.4, 0, 0.1 };
series.DataAdapter = new SortedNumericDataAdapter(args, values);
series.View = new CartesianLineSeriesView()
{
    Color = Avalonia.Media.Colors.Green,
    ShowMarkers = true,
    MarkerSize = 4,
    Thickness = 2
};

Пример - Создание двух последовательных видов линий

В следующем примере создается контрол CartesianChart с двумя последовательными представлениями линий. Данные для представлений рядов предоставляются объектами FormulaDataAdapter, которые вычисляют значения в соответствии с указанными формулами. Подразумевается, что объект MainWindowViewModel задан в качестве контекста данных для окна.

chart-views-lineeriesview-example

В примере показано, как настроить толщину линии и точечные маркеры для последовательных видов.

Оси X и Y создаются в XAML для выполнения настройки их свойств. Обратите внимание на использование свойства NumericScaleOptions.LabelFormatter для форматирования меток оси произвольным способом.

<mx:MxWindow xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="using:ChartLinearSeriesView.ViewModels"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:mx="https://schemas.eremexcontrols.net/avalonia"
        xmlns:mxc="https://schemas.eremexcontrols.net/avalonia/charts"
        mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
        x:Class="ChartLinearSeriesView.Views.MainWindow"
        x:DataType="vm:MainWindowViewModel"
        Icon="/Assets/EMXControls.ico"
        Title="ChartLinearSeriesView"
        Width="600" Height="350"
        >
    <Design.DataContext>
        <vm:MainWindowViewModel/>
    </Design.DataContext>

    <mxc:CartesianChart x:Name="chartControl">
        <mxc:CartesianChart.Series>
            <mxc:CartesianSeries Name="lineSeries1" DataAdapter="{Binding LineSeries1.DataAdapter}" >
                <mxc:CartesianLineSeriesView Color="{Binding LineSeries1.Color}" MarkerSize="4" ShowMarkers="True" Thickness="2"/>
            </mxc:CartesianSeries>
            <mxc:CartesianSeries Name="lineSeries2" DataAdapter="{Binding LineSeries2.DataAdapter}" >
                <mxc:CartesianLineSeriesView Color="{Binding LineSeries2.Color}" MarkerSize="4" ShowMarkers="True" Thickness="2"/>
            </mxc:CartesianSeries>
        </mxc:CartesianChart.Series>

        <mxc:CartesianChart.AxesX>
            <mxc:AxisX Name="xAxis" Title="Arguments" >
                <mxc:AxisX.ScaleOptions>
                    <mxc:NumericScaleOptions LabelFormatter="{Binding ArgsLabelFormatter}"/>
                </mxc:AxisX.ScaleOptions>
            </mxc:AxisX>
        </mxc:CartesianChart.AxesX>
        <mxc:CartesianChart.AxesY>
            <mxc:AxisY Title="Values">
                <mxc:AxisY.ScaleOptions>
                    <mxc:NumericScaleOptions LabelFormatter="{Binding ArgsLabelFormatter}"/>
                </mxc:AxisY.ScaleOptions>
            </mxc:AxisY>
        </mxc:CartesianChart.AxesY>
    </mxc:CartesianChart>
</mx:MxWindow>
using Avalonia.Media;
using CommunityToolkit.Mvvm.ComponentModel;
using Eremex.AvaloniaUI.Charts;
using System;

namespace ChartLinearSeriesView.ViewModels;

public partial class MainWindowViewModel : ViewModelBase
{
    static double Sin(double argument) => 0.5* Math.Sin(argument)+0.5;
    static double Cos(double argument) => 0.6*Math.Cos(argument);

    [ObservableProperty] SeriesViewModel lineSeries1;
    [ObservableProperty] SeriesViewModel lineSeries2;
    [ObservableProperty] FuncLabelFormatter argsLabelFormatter = new(o => String.Format("{0:n1}", o));

    const int ItemCount = 37;
    const double Step = 0.1;

    public MainWindowViewModel()
    {
        LineSeries1 = new() 
        { 
            Color = Color.FromUInt32(0xfffeb640), 
            DataAdapter = new FormulaDataAdapter(-3, Step, ItemCount, Sin) 
        };
        LineSeries2 = new() 
        { 
            Color = Color.FromUInt32(0xff9389bd), 
            DataAdapter = new FormulaDataAdapter(-2, Step, ItemCount, Cos) 
        };
    }
}

public partial class SeriesViewModel : ObservableObject
{
    [ObservableProperty] Color color;
    [ObservableProperty] ISeriesDataAdapter dataAdapter;
}

Данные для просмотра серии линий

Вы можете использовать следующие адаптеры данных для предоставления данных для представлений рядов линий:

Числовые значения X:

  • SortedNumericDataAdapter
  • FormulaDataAdapter

Значения даты и времени X:

  • SortedDateTimeDataAdapter
  • SortedTimeSpanDataAdapter

Качественные значения X:

  • QualitativeDataAdapter

Свойства просмотра рядов линий

  • Color — Задает цвет отрисовки серии.
  • CrosshairMode — Указывает, привязывается ли метка диаграммы перекрестия к ближайшей точке данных или отображает интерполированное значение. Смотрите раздел Отображение точного или интерполированного значения в метках диаграммы перекрестий .
  • MarkerImage — Получает или устанавливает картинку для использования в качестве пользовательских точечных маркеров. Если картинка не указана, отображаются маркеры квадратной формы по умолчанию. Вы можете использовать экземпляр класса SvgImage для указания картинки в формате SVG.

    Свойство MarkerImage объявлено с атрибутом [Content], который позволяет вам определить картинку непосредственно между <Картезианский линейный просмотр> теги.

    <mxc:CartesianLineSeriesView>
        <SvgImage Source="avares://Demo/Assets/circle.svg" />
    </mxc:CartesianLineSeriesView>
    

    Файлы SVG содержат предопределенные цвета для элементов SVG. Чтобы эти цвета соответствовали цвету вашего ряда данных, вы можете либо:

    • Предварительно вручную отредактируйте исходный файл SVG-картинки
    • Используйте свойство MarkerImageCss для динамической настройки styles для элементов SVG. Стили применяются при отображении точечных маркеров.
  • MarkerImageCss — Указывает CSS styles для настройки во время выполнения SVG-картинки, определенной свойством MarkerImage. Основным вариантом использования является замена цветов элементов SVG на цвет серии (Color). Включите заполнитель {0}, чтобы вставить значение свойства Color в CSS-код.

    Например, когда свойство MarkerImage содержит SVG-картинку с элементом круга, следующий CSS-код стилизует circle с оранжевой заливкой (используя цвет серии) и темно-красной рамкой:

    <mxc:CartesianLineSeriesView Color="orange" MarkerImageCss="circle {{fill:{0};stroke:darkred;}}">
        <SvgImage Source="avares://Demo/Assets/circle.svg" />
    </mxc:CartesianLineSeriesView>
    

    Смотрите также: Пример - Создайте представление серии Lollipop и используйте пользовательские SVG-маркеры .

  • MarkerSize — Определяет размер точечных маркеров.

  • ShowInCrosshair — Определяет видимость метки диаграммы перекрестий для текущего ряда. Смотрите раздел Настройка меток диаграммы для перекрестия .
  • ShowMarkers — Включает или отключает точечные маркеры.
  • Thickness — Задает толщину линии.



* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.