【wpf】折れ線グラフの線の色を変更してカスタマイズする方法
【SparrowChart】wpf開発でグラフの描画ライブラリ
SparrowChartwpfのライブラリインストール方法は、下記の記事で説明しています。
グラフ色指定後出力
sin波形⇒”Red“赤に設定
cos波形⇒”Blue“青に設定
設定した色でグラフの描画が出力出来ました。
ちなみに、なにも色を設定しないと自動で色が設定されます。
”自動でしてくれるならそれでいいや”と、思いますが、
色の設定方法は覚えているといざというときに便利です。
下記が色設定しないバージョンで自動で設定された色配色です。
ソースコード
全体のソースコードは、こちらの記事に載せてますので参照して下さい。
今回のソースコード変更箇所は、xamlファイルとcsファイルになります。
各ファイルの変更点は下記の通りです。
【MainWindows.xaml】
<sparrow:SparrowChart Visibility="Visible" VerticalAlignment="Top" Height="367" >
<sparrow:SparrowChart.XAxis>
<sparrow:LinearXAxis x:Name="line_x" MinValue="0" MaxValue="1" Visibility="Visible"/>
</sparrow:SparrowChart.XAxis>
<sparrow:SparrowChart.YAxis>
<sparrow:LinearYAxis x:Name="line_y" MinValue="0" MaxValue="1" Visibility="Visible"/>
</sparrow:SparrowChart.YAxis>
<sparrow:LineSeries x:Name="Series_sin_a" PointsSource="{Binding Path=Points_sin_a}" XPath="X" YPath="Y"/>
<sparrow:LineSeries x:Name="Series_cos_a" PointsSource="{Binding Path=Points_cos_a}" XPath="X" YPath="Y"/>
</sparrow:SparrowChart>
LineSeriesにx:Name=”Series_sin_a”と、x:Name=”Series_cos_a”を追加しました。
【MainWindows.xaml.cs】
private void Window_Loaded(object sender, RoutedEventArgs e)
{
//グラフ
Points_sin_a = new ObservableCollection<Point>();
Points_cos_a = new ObservableCollection<Point>();
double[] data_a = new double[(int)size];
double[] data_b = new double[(int)size];
//csv出力用
sindata_res = new double[(int)size];
cosdata_res = new double[(int)size];
// 波形生成
for (int i = 0; i < size; i++)
{
double t = (double)i / fs; //time
// f(t) = a*sin(2πft)
data_a[i] = 0.3 * Math.Sin(2 * Math.PI * freq * t);
data_b[i] = 0.3 * Math.Cos(2 * Math.PI * freq * t);
//グラフ要素にデータ挿入
Points_sin_a.Add(new Point { X = i, Y = data_a[i] });
Points_cos_a.Add(new Point { X = i, Y = data_b[i] });
//csv出力用
sindata_res[i] = data_a[i];
cosdata_res[i] = data_b[i];
}
//this.DataContext = this; //波形プロット
//個別でプロット管理
this.DataContext = new
{
Points_sin_a,
Points_cos_a
};
//グラフ軸の表示範囲設定
line_x.MinValue = 0; //X軸の最小値
line_x.MaxValue = size; //X軸の最大値
line_y.MinValue = -0.3; //Y軸の最小値
line_y.MaxValue = 0.3; //Y軸の最大値
//line_y.MinValue = data_a.Min(); //Y軸の最小値 データ内の最小振幅値で可変
//line_y.MaxValue = data_a.Max(); //Y軸の最大値 データ内の最大振幅値で可変
//Lineの色指定
Series_sin_a.Stroke = new SolidColorBrush(Colors.Red); //sin波形の色指定
Series_cos_a.Stroke = new SolidColorBrush(Colors.Blue); //cos波形の色指定
}
//Lineの色指定というコメントを残しました。その下の2行分が今回の追加した変更点になります。
SolidColorBrushを使う際には、System.Windows.Mediaをusingに追加して下さい。
using System.Windows.Media;
Colors.Red
Colors.Blue
の色の設定値を変えることで任意の色に設定可能です。
おまけ
グラフ描画プロットを個別で設定したい時。
//this.DataContext = this; //波形プロット
//個別でプロット管理
this.DataContext = new
{
Points_sin_a,
Points_cos_a
};
this.DataContext = this;では全体のグラフを描画してしまいます。
this.DataContext = new { Points_sin_a, Points_cos_a };
と、個々に設定してあげることで
Bindingしたいグラフを個別に設定できます。
グラフを複数描画したいとき、管理したいとき、などに便利です。
