TrueChart for WinForms (C1Chart2D)
円グラフ
C1Chart の標準的なグラフの概要 > 円グラフ

円グラフも単純な値を表示するために一般的に使用されます。円グラフは視覚的な見栄えがよくなり、多くの場合、陰影や回転などの 3D 効果を付けて表示されます。C1Chart では、3D 効果をグラフに追加できますが、データを歪めるため慎重に使用する必要があります。

円グラフには、他の C1Chart のグラフの種類と比較した場合、大きな違いが1つあります。円グラフでは、各データセットは円の1セグメントを表します。そのため、データセットを1つしか持たない円グラフは存在しません(単なる円となります)。ほとんどの場合、円グラフには複数のデータセット(各セグメントに1データセット)があり、各データセットは単一のデータ点を持ちます。C1Chart では、複数のデータ点を含むデータセットはグラフ内の複数の円として表します。

この処理は、各データセットの識別に使用するラベルと、グラフの凡例内でのラベルの表示方法を考えれば理解できます。以下のグラフは、同じ売上データを円グラフとして示します。



このグラフを作成するために使用するコードは、棒グラフのコードと非常に異なります。各値に1データセットを作成し、各データセットは1つのデータ点を含みます。コードは以下のとおりです。

Visual Basic コードの書き方

Visual Basic
コードのコピー
' グラフデータを取得します。
Dim data As DataView = _dataSet.Tables["Products"].DefaultView
data.Sort = "UnitPrice"
data.RowFilter = "CategoryID = 1"    ' 飲料
 
' グラフを設定します。
C1Chart1.Reset()
C1Chart1.BackColor = Color.White
C1Chart1.ChartArea.Style.Font = new Font("Tahoma", 8)
C1Chart1.ChartGroups(0).ChartType = Chart2DTypeEnum.Pie
 
' データセットコレクションを取得します(円グラフの場合は1セグメント1データセットです)。
Dim dscoll As ChartDataSeriesCollection = C1Chart1.ChartGroups(0).ChartData.SeriesList
dscoll.Clear()
 
' データセットにデータを入力します。
Dim i As Integer
For i = 0 To data.Count ? 1
Dim series As ChartDataSeries = dscoll.AddNewSeries()
series.PointData.Length = 1
series.Y(0) = data(i)("UnitPrice")
series.Label = String.Format("{0} ({1:c})", _
    data(i)("ProductName"), data(i)("UnitPrice"))
Next I
 
' 円グラフの凡例を表示します。
C1Chart1.Legend.Visible = True
C1Chart1.Legend.Text = "Product Unit Prices"

C# コードの書き方

C#
コードのコピー
//グラフデータを取得します。
DataView data = _dataSet.Tables["Products"].DefaultView;
data.Sort = "UnitPrice";
data.RowFilter = "CategoryID = 1"; // 飲料
 
// グラフを設定します。
c1Chart1.Reset();
c1Chart1.BackColor = Color.White;
c1Chart1.ChartArea.Style.Font = new Font("Tahoma", 8);
c1Chart1.ChartGroups[0].ChartType = Chart2DTypeEnum.Pie;
 
// データセットコレクションを取得します(円グラフの場合は1セグメント1データセットです)。
ChartDataSeriesCollection   dscoll = c1Chart1.ChartGroups[0].ChartData.SeriesList;
dscoll.Clear();
// データセットにデータを入力します。
for (int i = 0; i < data.Count; i++)
{
ChartDataSeries series = dscoll.AddNewSeries();
series.PointData.Length = 1;
series.Y[0] = data[i]["UnitPrice"];
series.Label = string.Format("{0} ({1:c})",
    data[i]["ProductName"], data[i]["UnitPrice"]);
}
 
// 円グラフの凡例を表示します。
c1Chart1.Legend.Visible = true;
c1Chart1.Legend.Text = "Product Unit Prices";
関連トピック