You can add multiple series to your charts and set a different ChartType for each series. Such charts are helpful in analyzing complex chart data on a single canvas. The same data can be used with different visualizations or related data can be displayed together to convey trends.
The following image shows a FlexChart with multiple series.
The following code example demonstrates how to create multiple instances of type ChartSeries with different ChartTypes and add them to the FlexChart.
CS |
Copy Code
|
---|---|
class SalesData { #region ** fields static Random _rnd = new Random(); static string[] _countries = new string[] { "US", "Germany", "UK", "Japan", "Italy", "Greece" }; #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 // ** static list provider 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 has a wider range than DateTime, so clip // the converted date to DateTime.Min|MaxValue. double secs = date.SecondsSinceReferenceDate; if (secs < -63113904000) return DateTime.MinValue; if (secs > 252423993599) return DateTime.MaxValue; return (DateTime)date; } // ** static value providers public static string[] GetCountries() { return _countries; } #endregion } |
C# |
Copy Code
|
---|---|
chart.BindingX = "Name"; chart.Series.Add(new ChartSeries() { SeriesName = "Sales", Binding = "Sales,Sales" }); chart.Series.Add(new ChartSeries() { SeriesName = "Expenses", Binding = "Expenses,Expenses" }); chart.Series.Add(new ChartSeries() { SeriesName = "Downloads", Binding = "Downloads,Downloads", ChartType = C1.iOS.Chart.ChartType.LineSymbols }); chart.ItemsSource = SalesData.GetSalesDataList(); |