【问题标题】:Plotting two y-values for x=0 in a MS Chart control在 MS 图表控件中为 x=0 绘制两个 y 值
【发布时间】:2016-08-05 10:24:43
【问题描述】:

我在 Windows 窗体的 MS Chart 中发现了一个奇怪的行为。

假设我想要一个包含两个点 (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 值非零,散点图就不起作用。

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

有人对此行为有解释或解决此问题的方法吗?

【问题讨论】:

    标签: c# mschart


    【解决方案1】:

    我自己找到了解决办法:

    你必须添加

    series.CustomProperties = "IsXAxisQuantitative=True";
    

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

    【讨论】:

    • series["IsXAxisQuantitative"] = "true"; 是等效的,但会避免覆盖任何现有的自定义属性。
    【解决方案2】:

    (我只想评论 Fratyx 的回答,但我想没有这样做的声誉。)

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-31
      • 1970-01-01
      • 2015-11-25
      相关资源
      最近更新 更多