windowsforms-17443-controls-and-libraries-map-control-examples-vector-data-providing-data-how-to-automatically-generate-pie-charts-items-from-a-datasource.md
The PieChartDataAdapter class is intended to automatically generate pie charts from a data source.
Create the PieChartDataAdapter object, set its DataSourceAdapterBase.DataSource property and assign this data adapter to the VectorItemsLayer.Data property.
Specify the following PieChartDataAdapter properties:
Initialize the VectorItemsLayer.Colorizer property with a KeyColorColorizer object.
public Form1() {
InitializeComponent();
// Assign a PieChartDataAdapter object to Data.
PieLayer.Data = CreateData();
// Assign a KeyColorColorizer object to Colorizer.
PieLayer.Colorizer = CreateColorizer();
}
// Create a pie chart data adapter and specify its parameters.
IMapDataAdapter CreateData() {
PieChartDataAdapter adapter = new PieChartDataAdapter() {
DataSource = LoadDataFromXml(xmlFilepath),
PieItemDataMember = "Name",
ItemMinSize = 20,
ItemMaxSize = 60
};
// Specify mappings.
adapter.Mappings.Latitude = "CapitalLat";
adapter.Mappings.Longitude = "CapitalLon";
adapter.Mappings.PieSegment = "MedalClass";
adapter.Mappings.Value = "Quantity";
// Specify measure rules.
adapter.MeasureRules = new MeasureRules();
adapter.MeasureRules.RangeStops.Add(1);
adapter.MeasureRules.RangeStops.Add(10);
adapter.MeasureRules.RangeStops.Add(20);
adapter.MeasureRules.RangeStops.Add(30);
adapter.MeasureRules.RangeStops.Add(40);
return adapter;
}
private DataTable LoadDataFromXml(string path) {
DataSet ds = new DataSet();
ds.ReadXml(path);
DataTable table = ds.Tables[0];
return table;
}
// Create a colirizer and specify its options.
MapColorizer CreateColorizer() {
KeyColorColorizer colorizer = new KeyColorColorizer() {
ItemKeyProvider = new ArgumentItemKeyProvider()
};
colorizer.Colors.Add(Color.FromArgb(255, 207, 98));
colorizer.Colors.Add(Color.FromArgb(169, 181, 188));
colorizer.Colors.Add(Color.FromArgb(233, 152, 118));
colorizer.Keys.Add(new ColorizerKeyItem() { Key = 1, Name = "Gold" });
colorizer.Keys.Add(new ColorizerKeyItem() { Key = 2, Name = "Silver" });
colorizer.Keys.Add(new ColorizerKeyItem() { Key = 3, Name = "Bronze" });
return colorizer;
}
Public Sub New()
InitializeComponent()
' Assign a PieChartDataAdapter object to Data.
PieLayer.Data = CreateData()
' Assign a KeyColorColorizer object to Colorizer.
PieLayer.Colorizer = CreateColorizer()
End Sub
' Create a pie chart data adapter and specify its parameters.
Private Function CreateData() As IMapDataAdapter
Dim adapter As New PieChartDataAdapter() With {.DataSource = LoadDataFromXml(xmlFilepath), .PieItemDataMember = "Name", .ItemMinSize = 20
' Specify mappings.
adapter.Mappings.Latitude = "CapitalLat"
adapter.Mappings.Longitude = "CapitalLon"
adapter.Mappings.PieSegment = "MedalClass"
adapter.Mappings.Value = "Quantity"
' Specify measure rules.
adapter.MeasureRules = New MeasureRules()
adapter.MeasureRules.RangeStops.Add(1)
adapter.MeasureRules.RangeStops.Add(10)
adapter.MeasureRules.RangeStops.Add(20)
adapter.MeasureRules.RangeStops.Add(30)
adapter.MeasureRules.RangeStops.Add(40)
Return adapter
End Function
Private Function LoadDataFromXml(ByVal path As String) As DataTable
Dim ds As New DataSet()
ds.ReadXml(path)
Dim table As DataTable = ds.Tables(0)
Return table
End Function
' Create a colirizer and specify its options.
Private Function CreateColorizer() As MapColorizer
Dim colorizer As New KeyColorColorizer() With {.ItemKeyProvider = New ArgumentItemKeyProvider()}
colorizer.Colors.Add(Color.FromArgb(255, 207, 98))
colorizer.Colors.Add(Color.FromArgb(169, 181, 188))
colorizer.Colors.Add(Color.FromArgb(233, 152, 118))
colorizer.Keys.Add(New ColorizerKeyItem() With {.Key = 1, .Name = "Gold"})
colorizer.Keys.Add(New ColorizerKeyItem() With {.Key = 2, .Name = "Silver"})
colorizer.Keys.Add(New ColorizerKeyItem() With {.Key = 3, .Name = "Bronze"})
Return colorizer
End Function