FlexChart for WinForms
クイックスタート

このクイックスタートでは、Visual Studio で単純な Sunburst アプリケーションを作成して実行する手順を説明します。

Sunburst チャートの使用をすぐに開始し、アプリケーション実行時にどのように表示されるかを確認するには、次の手順に従います。

  1. アプリケーションへの Sunburst チャートの追加
  2. データソースへの Sunburst チャートの連結
  3. アプリケーションの実行

次の図に、上記の手順を完了した後に、基本的な Sunburst チャートがどのように表示されるかを示します。

手順 1:アプリケーションへの Sunburst チャートの追加

  1. Visual Studio で Windows フォームアプリケーションを作成します。
  2. Sunburst コントロールを Form にドラッグアンドドロップします。
    次の dll が自動的にアプリケーションに追加されます。
    C1.Win.C1DX.4.dll
    C1.Win.C1Input.4.dll
    C1.Win.FlexChart.4.dll

手順 2:データソースへの Sunburst チャートの連結

この手順では、まず、2013、2014、2015 年の各 4 四半期分(Q1、Q2、Q3、Q4)のランダムな売上データを生成する DataService クラスを作成します。次に、FlexPie クラスで提供される DataSource プロパティを使用して、作成したクラスに Sunburst チャートを連結します。次に、FlexPie クラスの Binding および BindingName プロパティを使用して、Sunburst グラフセグメントの数値とラベルをそれぞれ指定します。

  1. クラス DataService を追加し、次のコードを追加します。
    Imports System.Collections.Generic
    Imports System.Linq
    Imports System.Text
    Imports System.Threading.Tasks
    
    Namespace SunburstQuickStart
        Class DataService
            Private rnd As New Random()
            Shared _default As DataService
    
            Public Shared ReadOnly Property Instance() As DataService
                Get
                    If _default Is Nothing Then
                        _default = New DataService()
                    End If
    
                    Return _default
                End Get
            End Property
            Public Shared Function CreateFlatData() As List(Of FlatDataItem)
                Dim rnd As Random = Instance.rnd
                Dim years As New List(Of String)()
                Dim times As New List(Of List(Of String))() From {
                    New List(Of String)() From {
                        "1月",
                        "2月",
                        "3月"
                    },
                    New List(Of String)() From {
                        "4月",
                        "5月",
                        "6月"
                    },
                    New List(Of String)() From {
                        "7月",
                        "8月",
                        "9月"
                    },
                    New List(Of String)() From {
                        "10月",
                        "11月",
                        "12月"
                    }
                }
    
        Dim items As New List(Of FlatDataItem)()
        Dim yearLen = Math.Max(CInt(Math.Round(Math.Abs(5 - rnd.NextDouble() * 10))), 3)
        Dim currentYear As Integer = DateTime.Now.Year
        For i As Integer = yearLen To 1 Step -1
                years.Add((currentYear - i).ToString())
            Next
       Dim quarterAdded = False
        years.ForEach(Function(y)
                      Dim i = years.IndexOf(y)
                      Dim addQuarter = rnd.NextDouble() > 0.5
                       If Not quarterAdded AndAlso i = years.Count - 1 Then
                                      addQuarter = True
                           End If
                        If addQuarter Then
                     quarterAdded = True
                              times.ForEach(Function(q)
                              Dim addMonth = rnd.NextDouble() > 0.5
                          Dim idx As Integer = times.IndexOf(q)
                           Dim quar = "Q" + (idx + 1)
                                    If addMonth Then
                               q.ForEach(Function(m)
                                    items.Add(New FlatDataItem() With {
                                            .Year = y,
                                            .Quarter = quar,
                                            .Month = m,
                                            .Value = rnd.[Next](30, 40)
                                                                          })
    
                             End Function)
                                 Else
                                 items.Add(New FlatDataItem() With {
                                 .Year = y,
                                  .Quarter = quar,
                                 .Value = rnd.[Next](80, 100)
                                                            })
                                                End If
    
                                                    End Function)
                                  Else
                                      items.Add(New FlatDataItem() With {
                                       .Year = y.ToString(),
                                       .Value = rnd.[Next](80, 100)
                                      })
                                  End If
    
                              End Function)
    
                Return items
            End Function
        End Class
    End Namespace
    
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace SunburstQuickStart
    {
        class DataService
        {
            Random rnd = new Random();
            static DataService _default;
    
            public static DataService Instance
            {
                get
                {
                    if (_default == null)
                    {
                        _default = new DataService();
                    }
    
                    return _default;
                }
            }
            public static List<FlatDataItem> CreateFlatData()
            {
                Random rnd = Instance.rnd;
                List<string> years = new List<string>();
                List<List<string>> times = new List<List<string>>()
                {
                    new List<string>() { "1月", "2月", "3月"},
                    new List<string>() { "4月", "5月", "6月"},
                    new List<string>() { "7月", "8月", "9月"},
                    new List<string>() { "10月", "11月", "12月" }
                };
    
                List<FlatDataItem> items = new List<FlatDataItem>();
                var yearLen = Math.Max((int)Math.Round(Math.Abs(5 - rnd.NextDouble() * 10)), 3);
                int currentYear = DateTime.Now.Year;
                for (int i = yearLen; i > 0; i--)
                {
                    years.Add((currentYear - i).ToString());
                }
                var quarterAdded = false;
                years.ForEach(y =>
                {
                    var i = years.IndexOf(y);
                    var addQuarter = rnd.NextDouble() > 0.5;
                    if (!quarterAdded && i == years.Count - 1)
                    {
                        addQuarter = true;
                    }
                    if (addQuarter)
                    {
                        quarterAdded = true;
                        times.ForEach(q =>
                        {
                            var addMonth = rnd.NextDouble() > 0.5;
                            int idx = times.IndexOf(q);
                            var quar = "Q" + (idx + 1);
                            if (addMonth)
                            {
                                q.ForEach(m =>
                                {
                                    items.Add(new FlatDataItem()
                                    {
                                        Year = y,
                                        Quarter = quar,
                                        Month = m,
                                        Value = rnd.Next(30, 40)
                                    });
                                });
                            }
                            else
                            {
                                items.Add(new FlatDataItem()
                                {
                                    Year = y,
                                    Quarter = quar,
                                    Value = rnd.Next(80, 100)
                                });
                            }
                        });
                    }
                    else
                    {
                        items.Add(new FlatDataItem()
                        {
                            Year = y.ToString(),
                            Value = rnd.Next(80, 100)
                        });
                    }
                });
    
                return items;
            }
        }
    }
    
  2. コードビューForm1.cs)に切り替えて、次のコードを追加します。
    Imports SunburstQuickStart.SunburstQuickStart
    
    Partial Public Class Form1
        Inherits Form
        Public Sub New()
            InitializeComponent()
    
            ' データソースを指定します
            Sunburst1.DataSource = DataService.CreateFlatData()
    
            ' 円グラフセグメントの値を含むフィールドを指定します
            Sunburst1.Binding = "Value"
    
            ' 円グラフセグメントと凡例の値を含むフィールドを指定します
            Sunburst1.BindingName = "Year,Quarter,Month"
    
            ' データラベルの内容を設定します
            Sunburst1.DataLabel.Content = "{name}"
    
            ' データラベルの位置を設定します
            Sunburst1.DataLabel.Position = C1.Chart.PieLabelPosition.Inside
        End Sub
    End Class
    
    Public Class FlatDataItem
        Public Property Year() As String
            Get
                Return m_Year
            End Get
            Set
                m_Year = Value
            End Set
        End Property
        Private m_Year As String
        Public Property Quarter() As String
            Get
                Return m_Quarter
            End Get
            Set
                m_Quarter = Value
            End Set
        End Property
        Private m_Quarter As String
        Public Property Month() As String
            Get
                Return m_Month
            End Get
            Set
                m_Month = Value
            End Set
        End Property
        Private m_Month As String
        Public Property Value() As Double
            Get
                Return m_Value
            End Get
            Set
                m_Value = Value
            End Set
        End Property
        Private m_Value As Double
    End Class
    
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace SunburstQuickStart
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
    
                // データソースを指定します
                sunburst1.DataSource = DataService.CreateFlatData();
    
                // 円グラフセグメントの値を含むフィールドを指定します
                sunburst1.Binding = "Value";
    
                // 円グラフセグメントと凡例の値を含むフィールドを指定します
                sunburst1.BindingName = "Year,Quarter,Month";
    
                // データラベルの内容を設定します
                sunburst1.DataLabel.Content = "{name}";
    
                // データラベルの位置を設定します
                sunburst1.DataLabel.Position = C1.Chart.PieLabelPosition.Inside;
            }
        }
        public class FlatDataItem
        {
            public string Year { get; set; }
            public string Quarter { get; set; }
            public string Month { get; set; }
            public double Value { get; set; }
        }
    }
    

手順 3:アプリケーションの実行

[F5]キーを押してアプリケーションを実行し、Sunburst チャートがどのように表示されるかを確認します.

 

 


Copyright © GrapeCity inc. All rights reserved.