在MS图表控件中为x=0绘制两个y值



我在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值为非零,散点图就不起作用。

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

有人对这种行为有解释吗?或者对这个问题有解决方案吗?

我自己找到了一个解决方案:

你必须添加

series.CustomProperties = "IsXAxisQuantitative=True";

到您的代码。因此,x值实际上被视为值。如果我使用BindXY函数,我不知道为什么这不是不言自明的。

(我只是想对Fratyx的答案发表评论,但我想我没有这样做的声誉。)

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

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

最新更新