Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# devexpress XtraChart:x轴折线图年份以十进制显示,无法为wholerange和visualrange设置MaxValueInternal_C#_Charts_Devexpress - Fatal编程技术网

C# devexpress XtraChart:x轴折线图年份以十进制显示,无法为wholerange和visualrange设置MaxValueInternal

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

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

在x轴上是年,y轴上是人口 要为所有三个国家进行绘图,将有三个系列

我已经成功地创建了图表,但今年的情况有点像这样:

如果你看到x轴,它是以小数表示的,尽管数据库中的年份是以年表示的(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和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:#}”