作成日: 2022/04/04 最終更新日: 2022/04/04
文書種別
使用方法
詳細
軸の最小値と最大値(Min、Maxプロパティ)を明示的に設定しない(NaNである)場合、最小値・最大値はデータが存在する範囲を基に自動的に決定されます(オートスケール機能)。
これらの値は軸が描画された後でしか参照することができないため、Renderedイベントを利用しますが、軸のMin、MaxプロパティはNaNのままなので、実際の値はActualMin、ActualMaxプロパティを用いて取得します。
グラフに複数の軸がある場合も、この動作は同じです。
以下に、2番目のシリーズに対してY2軸を追加した場合のサンプルコードを記載します。

◎サンプルコード(VB)
(出力結果)
AxisX.Min、Max = NaN NaN
AxisX.ActualMin、ActualMax = 0 3
AxisY1.Min、Max = NaN NaN
AxisY1.ActualMin、ActualMax = 10 45
AxisY2.Min、Max = NaN NaN
AxisY2.ActualMin、ActualMax = 110 180
これらの値は軸が描画された後でしか参照することができないため、Renderedイベントを利用しますが、軸のMin、MaxプロパティはNaNのままなので、実際の値はActualMin、ActualMaxプロパティを用いて取得します。
グラフに複数の軸がある場合も、この動作は同じです。
以下に、2番目のシリーズに対してY2軸を追加した場合のサンプルコードを記載します。
◎サンプルコード(VB)
Imports C1.Chart
Imports C1.Win.Chart
Public Class Form1
Dim series1, series2 As Series
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' データテーブルの設定
Dim dt1 As DataTable = New DataTable()
dt1.Columns.Add(New DataColumn("ID", GetType(Integer)))
dt1.Columns.Add(New DataColumn("個数", GetType(Integer)))
dt1.Rows.Add(0, 10)
dt1.Rows.Add(1, 45)
dt1.Rows.Add(2, 15)
dt1.Rows.Add(3, 30)
Dim dt2 As DataTable = New DataTable()
dt2.Columns.Add(New DataColumn("ID", GetType(Integer)))
dt2.Columns.Add(New DataColumn("個数", GetType(Integer)))
dt2.Rows.Add(0, 170)
dt2.Rows.Add(1, 130)
dt2.Rows.Add(2, 180)
dt2.Rows.Add(3, 110)
' Y1軸の設定
With FlexChart1.AxisY
.AxisLine = True
.MajorUnit = 5
.Position = Position.Left
End With
' Y2軸の作成
Dim Y2 As New Axis() With {
.AxisLine = True,
.MajorUnit = 10,
.Position = Position.Right
}
' シリーズへのバインド
FlexChart1.Series.Clear()
series1 = New Series()
series1.ChartType = ChartType.LineSymbols
series1.DataSource = dt1
series1.BindingX = "ID"
series1.Binding = "個数"
series1.Name = "S1"
FlexChart1.Series.Add(series1)
series2 = New Series()
series2.ChartType = ChartType.LineSymbols
series2.DataSource = dt2
series2.BindingX = "ID"
series2.Binding = "個数"
series2.Name = "S2"
series2.AxisY = Y2 '第2Y軸
FlexChart1.Series.Add(series2)
End Sub
Private Sub FlexChart1_Rendered(sender As Object, e As RenderEventArgs) Handles FlexChart1.Rendered
Console.WriteLine($"AxisX.Min、Max = {FlexChart1.AxisX.Min} {FlexChart1.AxisX.Max}")
Console.WriteLine($"AxisX.ActualMin、ActualMax = {FlexChart1.AxisX.ActualMin} {FlexChart1.AxisX.ActualMax}")
Console.WriteLine($"AxisY.Min、Max = {FlexChart1.AxisY.Min} {FlexChart1.AxisY.Max}")
Console.WriteLine($"AxisY.ActualMin、ActualMax = {FlexChart1.AxisY.ActualMin} {FlexChart1.AxisY.ActualMax}")
Console.WriteLine($"AxisY2.Min、Max = {series2.AxisY.Min} {series2.AxisY.Max}")
Console.WriteLine($"AxisY2.ActualMin、ActualMax = {series2.AxisY.ActualMin} {series2.AxisY.ActualMax}")
End Sub
End Class
◎サンプルコード(C#)
using C1.Chart;
using C1.Win.Chart;
namespace prj_C1FlexChart
{
public partial class Form1 : Form
{
Series series1, series2;
public Form1()
{
InitializeComponent();
//データテーブルの設定
DataTable dt1 = new DataTable();
dt1.Columns.Add(new DataColumn("ID", typeof(Int32)));
dt1.Columns.Add(new DataColumn("個数", typeof(Int32)));
dt1.Rows.Add(0, 10);
dt1.Rows.Add(1, 45);
dt1.Rows.Add(2, 15);
dt1.Rows.Add(3, 30);
DataTable dt2 = new DataTable();
dt2.Columns.Add(new DataColumn("ID", typeof(Int32)));
dt2.Columns.Add(new DataColumn("個数", typeof(Int32)));
dt2.Rows.Add(0, 170);
dt2.Rows.Add(1, 130);
dt2.Rows.Add(2, 180);
dt2.Rows.Add(3, 110);
// Y1軸の設定
Axis Y1 = flexChart1.AxisY;
Y1.AxisLine = true;
Y1.MajorUnit = 5;
Y1.Position = Position.Left;
// Y2軸の作成
Axis Y2 = new Axis();
Y2.AxisLine = true;
Y2.MajorUnit = 10;
Y2.Position = Position.Right;
// シリーズへのバインド
flexChart1.Series.Clear();
series1 = new Series();
series1.ChartType = ChartType.LineSymbols;
series1.DataSource = dt1;
series1.BindingX = "ID";
series1.Binding = "個数";
series1.Name = "S1";
flexChart1.Series.Add(series1);
series2 = new Series();
series2.ChartType = ChartType.LineSymbols;
series2.DataSource = dt2;
series2.BindingX = "ID";
series2.Binding = "個数";
series2.Name = "S2";
series2.AxisY = Y2; //2Y軸
flexChart1.Series.Add(series2);
}
private void flexChart1_Rendered(object sender, RenderEventArgs e)
{
Console.WriteLine($"AxisX.Min、Max = {flexChart1.AxisX.Min} {flexChart1.AxisX.Max}");
Console.WriteLine($"AxisX.ActualMin、ActualMax = {flexChart1.AxisX.ActualMin} {flexChart1.AxisX.ActualMax}");
Console.WriteLine($"AxisY1.Min、Max = {flexChart1.AxisY.Min} {flexChart1.AxisY.Max}");
Console.WriteLine($"AxisY1.ActualMin、ActualMax = {flexChart1.AxisY.ActualMin} {flexChart1.AxisY.ActualMax}");
Console.WriteLine($"AxisY2.Min、Max = {flexChart1.AxisY.Min} {flexChart1.AxisY.Max}");
Console.WriteLine($"AxisY2.ActualMin、ActualMax = {series2.AxisY.ActualMin} {series2.AxisY.ActualMax}");
}
}
}
(出力結果)
AxisX.Min、Max = NaN NaN
AxisX.ActualMin、ActualMax = 0 3
AxisY1.Min、Max = NaN NaN
AxisY1.ActualMin、ActualMax = 10 45
AxisY2.Min、Max = NaN NaN
AxisY2.ActualMin、ActualMax = 110 180