C# devexpress XtraChart:x轴折线图年份以十进制显示,无法为wholerange和visualrange设置MaxValueInternal
我是dev express的新手,我试图创建一个包含以下数据的折线图: 在x轴上是年,y轴上是人口 要为所有三个国家进行绘图,将有三个系列 我已经成功地创建了图表,但今年的情况有点像这样: 如果你看到x轴,它是以小数表示的,尽管数据库中的年份是以年表示的(Mysql) 我试着用C# devexpress XtraChart:x轴折线图年份以十进制显示,无法为wholerange和visualrange设置MaxValueInternal,c#,charts,devexpress,C#,Charts,Devexpress,我是dev express的新手,我试图创建一个包含以下数据的折线图: 在x轴上是年,y轴上是人口 要为所有三个国家进行绘图,将有三个系列 我已经成功地创建了图表,但今年的情况有点像这样: 如果你看到x轴,它是以小数表示的,尽管数据库中的年份是以年表示的(Mysql) 我试着用 diagram.AxisX.VisualRange.Auto = false; diagram.AxisX.VisualRange.AutoSideMargins = true; diagram.AxisX.Visu
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和wholerange之间的区别,但我没有了解MaxValueInternal的重要性,只是当序列的argumentscaletype为datetime或Quality时,它应该设置为double,但它如何影响序列?如果我们根本不使用它或在图表上使用它,有什么区别呢?我想你会把
MaxValueInternal
和MaxValueInterval
搞混了。无法将值设置为属性,因为此属性只有一个声明的getter。可以使用属性设置间隔。只需将属性设置为
NumericGridAlignment.Custom
并将属性设置为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);
下面是示例的结果:另外,如果我将AxisX.NumericScaleOptions.CustomMeasureUnit=5指定给与您答案中相同的代码,图表的线条将变得笔直。@Silver根据您上次的评论,我认为,
MeasureUnit
不是您要找的。尝试GridAlignment
。我已经更新了我的答案。谢谢。但是,根据我在x轴上的问题年份,在十进制简历中显示的问题。@Silver似乎有些奇怪。你的DevExpress版本是什么?@Silver我的版本是14.1.6。尝试设置diagram.axix.Label.TextPattern=“{V:#}”代码>。