作成日: 2023/12/13 最終更新日: 2023/12/13
文書種別
使用方法
詳細
互いに関連がある棒グラフと折れ線グラフを 1 つのプロット領域内に表示するなどにより、複合グラフを描画できます。
それには、1つのグラフに複数のシリーズを追加し、それぞれに異なるデータ値とチャートタイプを設定します。このとき、異なる値のデータに対応するため複数のY軸を作成し、各シリーズごとに指定できます。
以下に、ある試験の受験者数/合格者数、および各割合の推移を示す複合グラフの例を記載します。
ここでは、受験者数/合格者数はY1軸(左)を、受験率/合格率はY2軸を使用しています。
※Y1軸は既定のY軸なので、シリーズに明示的に設定する必要はありません。

◎サンプルコード(VB)
それには、1つのグラフに複数のシリーズを追加し、それぞれに異なるデータ値とチャートタイプを設定します。このとき、異なる値のデータに対応するため複数のY軸を作成し、各シリーズごとに指定できます。
以下に、ある試験の受験者数/合格者数、および各割合の推移を示す複合グラフの例を記載します。
ここでは、受験者数/合格者数はY1軸(左)を、受験率/合格率はY2軸を使用しています。
※Y1軸は既定のY軸なので、シリーズに明示的に設定する必要はありません。
◎サンプルコード(VB)
Imports C1.Chart
Imports C1.Win.Chart
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' ----軸の設定----
' 第1Y軸の設定 : (デフォルトY軸)
FlexChart1.AxisY.AxisLine = True
FlexChart1.AxisY.Min = 0
FlexChart1.AxisY.Max = 2000
FlexChart1.AxisY.MajorUnit = 200
FlexChart1.AxisY.Title = "人数"
' 第2Y軸の設定
Dim axisY2 As Axis = New Axis()
axisY2.AxisLine = True
axisY2.Min = 0
axisY2.Max = 1
axisY2.MajorUnit = 0.1
axisY2.Format = "## %"
axisY2.Position = Position.Right
axisY2.Title = "割合"
' X軸の書式の設定
FlexChart1.AxisX.Format = "yyyy年"
' ----データの作成----
Dim dt = New DataTable()
dt.Columns.AddRange(New DataColumn() {
New DataColumn("X", GetType(Date)),
New DataColumn("Y1", GetType(Integer)),
New DataColumn("Y2", GetType(Integer)),
New DataColumn("Y3", GetType(Double)),
New DataColumn("Y4", GetType(Double))
})
dt.Rows.Add("2019/1/1", 1000, 250, 0.8, 0.25)
dt.Rows.Add("2020/1/1", 1200, 420, 0.9, 0.35)
dt.Rows.Add("2021/1/1", 1300, 390, 0.85, 0.3)
dt.Rows.Add("2022/1/1", 1400, 532, 0.9, 0.38)
dt.Rows.Add("2023/1/1", 1500, 600, 0.95, 0.4)
dt.AcceptChanges()
' ----シリーズの作成----
Dim series1 = New Series() With {
.Name = "受験者数",
.Binding = "Y1",
.ChartType = ChartType.Column
}
Dim series2 = New Series() With {
.Name = "合格者数",
.Binding = "Y2",
.ChartType = ChartType.Column
}
Dim series3 = New Series() With {
.Name = "受験率",
.Binding = "Y3",
.ChartType = ChartType.LineSymbols,
.AxisY = axisY2
}
Dim series4 = New Series() With {
.Name = "合格率",
.Binding = "Y4",
.ChartType = ChartType.LineSymbols,
.AxisY = axisY2
}
' ----グラフ全体の設定----
FlexChart1.BindingX = "X"
FlexChart1.DataSource = dt
FlexChart1.Series.Clear()
FlexChart1.Series.Add(series1)
FlexChart1.Series.Add(series2)
FlexChart1.Series.Add(series3)
FlexChart1.Series.Add(series4)
FlexChart1.Legend.Position = Position.Bottom
End Sub
End Class
◎サンプルコード(C#)
using C1.Chart;
using C1.Win.Chart;
namespace prj_C1FlexChart
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
// ----軸の設定----
// 第1Y軸の設定 : (デフォルトY軸)
flexChart1.AxisY.AxisLine = true;
flexChart1.AxisY.Min = 0;
flexChart1.AxisY.Max = 2000;
flexChart1.AxisY.MajorUnit = 200;
flexChart1.AxisY.Title = "人数";
// 第2Y軸の設定
Axis axisY2 = new Axis();
axisY2.AxisLine = true;
axisY2.Min = 0;
axisY2.Max = 1;
axisY2.MajorUnit = 0.1;
axisY2.Format = "## %";
axisY2.Position = Position.Right;
axisY2.Title = "割合";
// X軸の書式の設定
flexChart1.AxisX.Format = "yyyy年";
// ----データの作成----
var dt = new DataTable();
dt.Columns.AddRange(new DataColumn[] {
new DataColumn("X",typeof(DateTime)),
new DataColumn("Y1",typeof(Int32)),
new DataColumn("Y2",typeof(Int32)),
new DataColumn("Y3",typeof(double)),
new DataColumn("Y4",typeof(double))
});
dt.Rows.Add("2019/1/1", 1000, 250, 0.80, 0.25);
dt.Rows.Add("2020/1/1", 1200, 420, 0.90, 0.35);
dt.Rows.Add("2021/1/1", 1300, 390, 0.85, 0.30);
dt.Rows.Add("2022/1/1", 1400, 532, 0.90, 0.38);
dt.Rows.Add("2023/1/1", 1500, 600, 0.95, 0.40);
dt.AcceptChanges();
// ----シリーズの作成----
var series1 = new Series()
{
Name = "受験者数",
Binding = "Y1",
ChartType = ChartType.Column,
};
var series2 = new Series()
{
Name = "合格者数",
Binding = "Y2",
ChartType = ChartType.Column,
};
var series3 = new Series()
{
Name = "受験率",
Binding = "Y3",
ChartType = ChartType.LineSymbols,
AxisY = axisY2
};
var series4 = new Series()
{
Name = "合格率",
Binding = "Y4",
ChartType = ChartType.LineSymbols,
AxisY = axisY2
};
// ----グラフ全体の設定----
flexChart1.BindingX = "X";
flexChart1.DataSource = dt;
flexChart1.Series.Clear();
flexChart1.Series.Add(series1);
flexChart1.Series.Add(series2);
flexChart1.Series.Add(series3);
flexChart1.Series.Add(series4);
flexChart1.Legend.Position = Position.Bottom;
}
}
}