作成日: 2022/01/21 最終更新日: 2022/01/21
文書種別
使用方法
詳細
散布図で、特定のデータ点の色を変更するには、系列のSymbolRenderingイベントで、条件にあったデータ点に対してe.Engine.SetFillメソッドを実行します。
以下に50個のデータ点のうち、Y値が15以上のポイントの色を赤に設定するサンプルを記載します。

【XAML】
以下に50個のデータ点のうち、Y値が15以上のポイントの色を赤に設定するサンプルを記載します。

【XAML】
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:C1FlexChart_scatter"
xmlns:c1="http://schemas.componentone.com/winfx/2006/xaml" x:Class="C1FlexChart_scatter.MainWindow"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<c1:C1FlexChart x:Name="flexChart" BindingX="DataX" ItemsSource="{Binding Data}">
<c1:Series x:Name="scatterSeries" SymbolRendering="OnSeriesSymbolRendering" Binding="DataY" ChartType="Scatter"></c1:Series>
</c1:C1FlexChart>
</Grid>
</Window>
【サンプルコード】(C#)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Collections.ObjectModel;
namespace C1FlexChart_scatter
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel();
}
private void OnSeriesSymbolRendering(object sender, C1.WPF.Chart.RenderSymbolEventArgs e)
{
var item = e.Item as DataItem;
if (item.DataY > 15)
{
e.Engine.SetStroke(Brushes.Red);
e.Engine.SetFill(Brushes.Red);
}
}
}
public class ViewModel
{
public ObservableCollection<DataItem> Data { get; set; }
public ViewModel()
{
Random random = new Random();
Data = new ObservableCollection<DataItem>(Enumerable.Range(1, 50).Select(x => new DataItem()
{
DataX = x,
DataY = random.Next(10, 20)
}));
}
}
public class DataItem
{
public double DataX { get; set; }
public double DataY { get; set; }
}
}