Серия Линии¶
Вид серии линий (CartesianLineSeriesView
) соединяет точки линиями. Серия позволяет отображать или скрывать точечные маркеры, а также регулировать толщину линий и точечных маркеров. На следующей картинке показан контрол диаграммы с двумя рядами линий, каждый из которых рисован своим собственным цветом.
Создание представления серии линий¶
Чтобы создать представление серии линий, добавьте объект 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 задан в качестве контекста данных для окна.
В примере показано, как настроить толщину линии и точечные маркеры для последовательных видов.
Оси 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
— Задает толщину линии.
* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.