我是dev-express的新手,我正在尝试创建一个包含以下数据的折线图:
x轴是年,y轴是人口 并为3个国家的情节进行策划,将有三个系列。
我已经成功创建了图表但年份显示有点像这样:
如果你看到x轴它会像小数一样,虽然在数据库年是在YEAR(Mysql)
我尝试使用
diagram.AxisX.VisualRange.Auto = false;
diagram.AxisX.VisualRange.AutoSideMargins = true;
diagram.AxisX.VisualRange.MinValue = 2000;
diagram.AxisX.VisualRange.MaxValue = 2010;
diagram.AxisX.WholeRange.MinValue = 1990;
diagram.AxisX.WholeRange.MaxValue = 2014;
还有一个问题我尝试使用WholeRange.MaxValueInternal和VisualRange.MaxValueInternal 但得到以下错误:
我也知道VisualRange和整数范围之间的区别,但我没有得到MaxValueInternal的重要性,除了当系列'argumentscaletype是datetime或定性时应该设置为double,但它如何影响系列?如果我们根本不使用它或在图表上使用它会有什么不同呢?
答案 0 :(得分:2)
我认为您在MaxValueInternal
和MaxValueInterval
之间感到困惑。您无法将值设置为VisualRange.MaxValueInternal
属性,因为此属性仅声明了getter
您可以使用AxisX.NumericScaleOptions
属性设置间隔。只需将NumericScaleOptions.GridAlignment
属性设置为NumericGridAlignment.Custom
,然后将NumericScaleOptions.CustomGridAlignment
属性设置为YourIntervalValue / 2
。
这是一个例子:
const double interval = 1;
var table = new DataTable();
table.Columns.Add("id", typeof(int));
table.Columns.Add("Country", typeof(string));
table.Columns.Add("Year", typeof(int));
table.Columns.Add("Population_millions", typeof(int));
table.Rows.Add(1, "Europe", 2000, 4000);
table.Rows.Add(2, "America", 2000, 7000);
table.Rows.Add(3, "Africa", 2000, 1000);
table.Rows.Add(4, "Africa", 2005, 2000);
table.Rows.Add(5, "Europe", 2005, 9000);
table.Rows.Add(6, "America", 2005, 6000);
table.Rows.Add(7, "America", 2007, 3000);
table.Rows.Add(8, "Europe", 2007, 1900);
table.Rows.Add(9, "Africa", 2007, 1500);
var chart = new ChartControl();
chart.DataSource = table;
chart.SeriesDataMember = "Country";
chart.BindToData(ViewType.Line, table, "Country", "Year", new string[] { "Population_millions" });
var diagram = (XYDiagram)chart.Diagram;
diagram.AxisX.NumericScaleOptions.GridAlignment = NumericGridAlignment.Custom;
diagram.AxisX.NumericScaleOptions.CustomGridAlignment = interval / 2;
diagram.AxisX.WholeRange.MinValue = 1990;
diagram.AxisX.WholeRange.MaxValue = 2014;
diagram.AxisX.VisualRange.Auto = false;
diagram.AxisX.VisualRange.AutoSideMargins = true;
diagram.AxisX.VisualRange.MinValue = 2000;
diagram.AxisX.VisualRange.MaxValue = 2010;
diagram.EnableAxisXScrolling = true;
diagram.EnableAxisXZooming = true;
chart.Dock = DockStyle.Fill;
Controls.Add(chart);
这是例子的结果: