チャートに複数の系列を追加し、系列ごとに異なる ChartType を設定できます。このようなチャートは、1 つのキャンバスで複雑なチャートデータを分析する場合に役立ちます。同じデータを異なる方法で視覚化して使用したり、関連するデータを一緒に表示して傾向を示すことができます。
次の図は、複数の系列を持つ FlexChart を示しています。
次のコード例は、さまざまな ChartType を使用して ChartSeries タイプの複数のインスタンスを作成し、それらを FlexChart に追加する方法を示します。
CS |
コードのコピー
|
---|---|
class SalesData { #region ** fields static Random _rnd = new Random(); static string[] _countries = new string[] { "アメリカ", "ドイツ", "イギリス", "日本", "イタリア", "ギリシャ" }; #endregion #region ** initialization public SalesData() { this.Name = string.Empty; this.Sales = 0; this.Expenses = 0; this.Downloads = 0; this.Date = DateTime.Now; } public SalesData(string name, double sales, double expenses, double downloads, DateTime date) { this.Name = name; this.Sales = sales; this.Expenses = expenses; this.Downloads = downloads; this.Date = date; } #endregion #region ** object model [Export("Name")] public string Name { get; set; } [Export("Sales")] public double Sales { get; set; } [Export("Expenses")] public double Expenses { get; set; } [Export("Downloads")] public double Downloads { get; set; } public DateTime Date { get; set; } [Export("Date")] public NSDate iOSDate { get { return DateTimeToNSDate(Date); } set { Date = NSDateToDateTime(value); } } #endregion #region ** implementation // ** 静的リストプロバイダ public static List<SalesData> GetSalesDataList() { List<SalesData> array = new List<SalesData> (); for (int i = 0; i < GetCountries().Length; i++) { array.Add(new SalesData { Sales = _rnd.NextDouble() * 10000, Expenses = _rnd.NextDouble() * 5000, Downloads = _rnd.Next(20000), Date = DateTime.Now.AddDays(i), Name = GetCountries()[i] }); } return array; } public static List<SalesData> GetSalesDataList2() { List<SalesData> array = new List<SalesData>(); for (int i = 0; i < GetCountries().Length; i++) { array.Add(new SalesData { Sales = _rnd.Next(100) * 100, Expenses = _rnd.Next(100) * 50, Downloads = _rnd.Next(100), Date = DateTime.Now.AddDays(i), Name = GetCountries()[i] }); } return array; } public NSDate DateTimeToNSDate(DateTime date) { if (date.Kind == DateTimeKind.Unspecified) date = DateTime.SpecifyKind(date, DateTimeKind.Utc); return (NSDate)date; } public DateTime NSDateToDateTime(NSDate date) { // NSDateの範囲はDateTimeよりも広いため、 // 変換された日付をDateTime.Min|MaxValueにクリップします。 double secs = date.SecondsSinceReferenceDate; if (secs < -63113904000) return DateTime.MinValue; if (secs > 252423993599) return DateTime.MaxValue; return (DateTime)date; } // ** 静的リストプロバイダ public static string[] GetCountries() { return _countries; } #endregion } |
C# |
コードのコピー
|
---|---|
chart.BindingX = "Name"; chart.Series.Add(new ChartSeries() { SeriesName = "販売", Binding = "Sales,Sales" }); chart.Series.Add(new ChartSeries() { SeriesName = "費用", Binding = "Expenses,Expenses" }); chart.Series.Add(new ChartSeries() { SeriesName = "ダウンロード", Binding = "Downloads,Downloads", ChartType = C1.iOS.Chart.ChartType.LineSymbols }); chart.ItemsSource = SalesData.GetSalesDataList(); |