devexpress XtraChart:x轴上的折线图年份显示为十进制,无法设置MaxValueInternal用于整数范围和视觉范围

时间:2014-08-08 08:54:16

标签: c# charts devexpress

我是dev-express的新手,我正在尝试创建一个包含以下数据的折线图:

enter image description here

x轴是年,y轴是人口 并为3个国家的情节进行策划,将有三个系列。

我已经成功创建了图表但年份显示有点像这样: enter image description here

如果你看到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 但得到以下错误: enter image description here

我也知道VisualRange和整数范围之间的区别,但我没有得到MaxValueInternal的重要性,除了当系列'argumentscaletype是datetime或定性时应该设置为double,但它如何影响系列?如果我们根本不使用它或在图表上使用它会有什么不同呢?

1 个答案:

答案 0 :(得分:2)

我认为您在MaxValueInternalMaxValueInterval之间感到困惑。您无法将值设置为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);

这是例子的结果:
Result