在MS Chart控件中绘制x = 0的两个y值

时间:2016-08-05 10:24:44

标签: c# mschart

我在MS Chart for Windows Forms中发现了一种奇怪的行为。

假设我想要一个带有两个点(1,10)和(1,20)的散点图。我可以这样做:

....
Series series = new Series();
series.ChartType = SeriesChartType.Point;
double[] x = { 1, 1 };
double[] y = { 10, 20 };
series.Points.DataBindXY(x, y);

工作正常。但现在我想要相同的结果,但两个x值应该是0

double[] x = { 0, 0 };
double[] y = { 10, 20 };
series.Points.DataBindXY(x, y);

在这种情况下,图表控件在'自动生成'x位置1和2处创建两个数据点。它只是忽略给定的x值。如果我使用

,这是相同的行为
series.Points.AddXY(0, 10);
series.Points.AddXY(0, 20);

我对两个以上的数据点有相同的效果。因此,如果至少有一个x值不为零,则散点图不起作用。

我认为可能的解决方法是使用多个系列,但这是不可接受的。

是否有人对此行为或此问题的解决方案有解释?

2 个答案:

答案 0 :(得分:3)

我自己找到了解决方案:

你必须添加

series.CustomProperties = "IsXAxisQuantitative=True";

代码。所以x值真的被视为值。如果我使用BindXY函数,我不知道为什么这不是不言而喻的。

答案 1 :(得分:0)

(我只会对Fratyx的答案发表评论,但我认为没有这样的声誉。)

要详细说明Fratyx的答案,IsXAxisQuantitative属性仅适用于某些SeriesChartType,并且对于其他类型将被忽略。

以下是这些类型: https://referencesource.microsoft.com/#System.Windows.Forms.DataVisualization/Common/Utilities/CustomAttributesRegistry.cs,e51a969ce4c7db16