This repository has been archived by the owner on Sep 25, 2023. It is now read-only.
/
Form1.cs
61 lines (54 loc) · 2.62 KB
/
Form1.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
using System;
using System.Collections;
using System.Data;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using System.Xml.Linq;
using DevExpress.XtraCharts;
// ...
namespace SideBySideFullStackedBarChart {
public partial class Form1 : Form {
ChartControl stackedBarChart;
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
// Create a new chart.
stackedBarChart = new ChartControl();
stackedBarChart.DataSource = AgeStructureDataReader.GetDataByAgeAndGender();
stackedBarChart.SeriesTemplate.SeriesDataMember = "GenderAge";
stackedBarChart.SeriesTemplate.ArgumentDataMember = "Country";
stackedBarChart.SeriesTemplate.ValueDataMembers.AddRange("Population");
stackedBarChart.SeriesTemplate.View = new SideBySideFullStackedBarSeriesView();
stackedBarChart.BoundDataChanged += this.OnChartBoundDataChanged;
// Access the type-specific options of the diagram.
XYDiagram diagram = (XYDiagram)stackedBarChart.Diagram;
diagram.Rotated = true;
diagram.AxisY.Label.TextPattern = "{VP:P}";
diagram.AxisY.WholeRange.AutoSideMargins = false;
diagram.AxisY.WholeRange.SideMarginsValue = 0;
// Hide the legend (if necessary).
stackedBarChart.Legend.Visibility = DevExpress.Utils.DefaultBoolean.True;
stackedBarChart.Legend.AlignmentHorizontal = LegendAlignmentHorizontal.Center;
stackedBarChart.Legend.AlignmentVertical = LegendAlignmentVertical.BottomOutside;
stackedBarChart.Legend.MaxVerticalPercentage = 20;
// Add a title to the chart (if necessary).
stackedBarChart.Titles.Add(new ChartTitle());
stackedBarChart.Titles[0].Text = "Population: Age-Gender Structure";
stackedBarChart.Titles[0].WordWrap = true;
// Add the chart to the form.
stackedBarChart.Dock = DockStyle.Fill;
this.Controls.Add(stackedBarChart);
}
private void OnChartBoundDataChanged(object sender, EventArgs e) {
foreach (Series series in stackedBarChart.Series) {
if (!(series.Tag is GenderAgeInfo)) return;
GenderAgeInfo item = (GenderAgeInfo)series.Tag;
SideBySideFullStackedBarSeriesView view = series.View as SideBySideFullStackedBarSeriesView;
if (view == null) return;
view.StackedGroup = item.Gender;
}
}
}
}