Area Series View¶
Представление Area Series View (CartesianAreaSeriesView) соединяет точки линиями и закрашивает области между диаграммами и осью X указанными цветами. Вы можете закрашивать эти области полупрозрачными цветами, чтобы смешивать цвета нескольких серий и сохранять видимыми линии сетки диаграммы под ними.
Создание Area Series View¶
Чтобы создать Area Series View, добавьте объект CartesianSeries в коллекцию CartesianChart.Series и инициализируйте свойство CartesianSeries.View объектом CartesianAreaSeriesView.
Используйте свойство CartesianSeries.DataAdapter, чтобы предоставить данные для серии.
В следующем коде показано, как создать Area Series View в XAML и code-behind.
xmlns:mxc="https://schemas.eremexcontrols.net/avalonia/charts"
<mxc:CartesianChart x:Name="chartControl">
<mxc:CartesianChart.Series>
<mxc:CartesianSeries Name="areaSeries1" DataAdapter="{Binding DataAdapter}" >
<mxc:CartesianAreaSeriesView Color="Green" Transparency="0.3" MarkerSize="5" ShowMarkers="True"/>
</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[] { 5,4,3,2,3,4,5 };
series.DataAdapter = new SortedNumericDataAdapter(args, values);
series.View = new CartesianAreaSeriesView()
{
Color = Avalonia.Media.Colors.Green,
Transparency = 0.3,
ShowMarkers = true,
MarkerSize = 5
};
Tip
Если вы используете аргументы типа "дата-время", вам также может потребоваться инициализировать ось X и настроить параметры шкалы оси. Подробнее см. в разделе: Шкала оси.
Пример - Создание двух Area Series View¶
Следующий пример создаёт контрол CartesianChart с двумя Area Series View. Данные для представлений серий предоставляются объектами 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:ChartAreaSeriesView.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="ChartAreaSeriesView.Views.MainWindow"
x:DataType="vm:MainWindowViewModel"
Icon="/Assets/EMXControls.ico"
Title="ChartAreaSeriesView">
<Design.DataContext>
<vm:MainWindowViewModel/>
</Design.DataContext>
<mxc:CartesianChart x:Name="chartControl">
<mxc:CartesianChart.Series>
<mxc:CartesianSeries Name="areaSeries1" DataAdapter="{Binding AreaSeries1.DataAdapter}" >
<mxc:CartesianAreaSeriesView Color="{Binding AreaSeries1.Color}" Transparency="0.6" MarkerSize="3" ShowMarkers="True"/>
</mxc:CartesianSeries>
<mxc:CartesianSeries Name="areaSeries2" DataAdapter="{Binding AreaSeries2.DataAdapter}" >
<mxc:CartesianAreaSeriesView Color="{Binding AreaSeries2.Color}" Transparency="0.6" MarkerSize="3" ShowMarkers="True"/>
</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:CartesianChart.AxesY>
</mxc:CartesianChart>
</mx:MxWindow>
using Avalonia.Media;
using CommunityToolkit.Mvvm.ComponentModel;
using Eremex.AvaloniaUI.Charts;
using System;
namespace ChartAreaSeriesView.ViewModels;
public partial class MainWindowViewModel : ViewModelBase
{
static double Exp(double argument) => 2 * Math.Exp(-argument) - 2;
static double Exp2(double argument) => Math.Exp(argument) + 2;
[ObservableProperty] SeriesViewModel areaSeries1;
[ObservableProperty] SeriesViewModel areaSeries2;
[ObservableProperty] FuncLabelFormatter argsLabelFormatter = new(o => String.Format("{0:n1}", o));
const int ItemCount = 41;
const double Step = 0.1;
public MainWindowViewModel()
{
AreaSeries1 = new() { Color = Color.FromUInt32(0xffDF3C5F), DataAdapter = new FormulaDataAdapter(-2, Step, ItemCount, Exp) };
AreaSeries2 = new() { Color = Color.FromUInt32(0xff6F9BD1), DataAdapter = new FormulaDataAdapter(-2, Step, ItemCount, Exp2) };
}
}
public partial class SeriesViewModel : ObservableObject
{
[ObservableProperty] Color color;
[ObservableProperty] ISeriesDataAdapter dataAdapter;
}
Данные для Area Series View¶
Вы можете использовать следующие адаптеры данных для предоставления данных для Area Series View:
Числовые значения X:
SortedNumericDataAdapterFormulaDataAdapter
Значения даты и времени X:
SortedDateTimeDataAdapterSortedTimeSpanDataAdapter
Качественные значения X:
QualitativeDataAdapter
Параметры Area Series View¶
Color— Задаёт цвет, используемый для закраски серии.CrosshairMode— Задаёт, привязывается ли подпись перекрестия к ближайшей точке данных, или отображает интерполированное значение. См. Отображение точного или интерполированного значения в подписях перекрестия.-
MarkerImage— Получает или задаёт изображение, используемое в качестве пользовательских маркеров точек. Если изображение не указано, отображаются стандартные маркеры в форме квадрата. Вы можете использовать экземпляр классаSvgImage, чтобы задать SVG-изображение.Свойство
MarkerImageобъявлено с атрибутом[Content], что позволяет определить изображение непосредственно между тегами <CartesianAreaSeriesView>.<mxc:CartesianAreaSeriesView> <SvgImage Source="avares://Demo/Assets/circle.svg" /> </mxc:CartesianAreaSeriesView>SVG-файлы содержат предопределённые цвета для SVG-элементов. Чтобы эти цвета соответствовали цвету вашей серии данных, вы можете:
- Вручную отредактировать исходный SVG-файл заранее
- Использовать свойство
MarkerImageCss, чтобы динамически настраивать стили для SVG-элементов. Стили применяются при отрисовке маркеров точек.
-
MarkerImageCss— Задаёт CSS-стили для настройки SVG-изображения, заданного свойствомMarkerImage, во время выполнения. Основной сценарий использования — замена цветов SVG-элементов на цвет серии (Color). Включите заполнитель{0}, чтобы вставить значение свойстваColorв CSS-код.Например, когда свойство
MarkerImageсодержит SVG-изображение с элементом circle, следующий CSS-код стилизуетcircleзаливкой Orange (используя цвет серии) и границей Dark Red:<mxc:CartesianAreaSeriesView Color="orange" MarkerImageCss="circle {{fill:{0};stroke:darkred;}}"> <SvgImage Source="avares://Demo/Assets/circle.svg" /> </mxc:CartesianAreaSeriesView>Смотрите также: Пример - Создание Lollipop Series View и использование пользовательских SVG-маркеров.
-
MarkerSize— Задаёт размер маркеров точек. ShowInCrosshair— Задаёт видимость подписи перекрестия для текущей серии. См. Настройка подписей перекрестия.ShowMarkers— Включает или отключает маркеры точек.Thickness— Задаёт толщину линии.Transparency— Значение от0до1, задающее уровень прозрачности закрашенных областей:0означает полную непрозрачность1означает полную прозрачность
* Эта страница переведена с использованием технологий машинного перевода.

