winform中的图表显示错误的Point

时间:2014-11-11 14:38:17

标签: c# winforms forms charts mschart

我有以下代码。 我已经硬编码了x和y值来测试。 由于某种原因,点(0,-0.5)它绘制(1,-0.5) 对于我的生活,我不知道发生了什么,因为如果你尝试其他值,那么图表会正确显示。

foreach (var grp in q)
            {
                point = new DataPoint();
                 Sum1 = grp.Sum1 > 2 ? 2 : grp.Sum1;
                Sum1 = Sum1 < -2 ? -2 : Sum1;

                Sum2 = grp.Sum2 > 2 ? 2 : grp.Sum2;
                Sum2 = Sum2 < -2 ? -2 : Sum2;

                point.XValue = 0;
                point.YValues = new double[] { -0.5 };

                chart1.Series.Add(grp.Id.ToString());
                chart1.Series[grp.Id.ToString()].ChartType = SeriesChartType.Point;
                chart1.Series[grp.Id.ToString()].Label = grp.Id.ToString();
                chart1.Series[grp.Id.ToString()].Points.Add(point);
                chart1.Series[grp.Id.ToString()].ToolTip = "THEMES = " + Sum1 + "\n PRICES = " + Sum2;
                chart1.Series[grp.Id.ToString()].LabelToolTip = "THEMES = " + Sum1 + "\n PRICES = " + Sum2;
                chart1.Series[grp.Id.ToString()].MarkerSize = 11;

                chart1.Update();

                if (grp.Id.ToString() == "WW" || grp.Id.ToString() == "PB"
                    || grp.Id.ToString() == "AJ" || grp.Id.ToString() == "AK")
                {
                    avgTheme += (float)Sum1;
                    avgPrice += (float)Sum2;
                    count++;
                }
            }

enter image description here

更新:

需要添加此行,仅适用于.NET 4.5

          chart1.Series["ABC"].CustomProperties = "IsXAxisQuantitative=True";

2 个答案:

答案 0 :(得分:1)

这真的很奇怪!看起来像是一个很难相信的bug。我玩过但只能确认似乎没有办法将Point设置为Series中的0位置。

这是一个愚蠢的解决方法:

S1.ChartType = SeriesChartType.Point;

for (int i=0; i < 2; i++)
{
    DataPoint point = new DataPoint();
    point.SetValueXY(i, -0.5);
    if (i > 0) point.Color = Color.Transparent;
    S1.Points.Add(point);
}

我希望我知道这是关于什么的 - Chart是如此错误的记录,可能仍然有一些制度让人疯狂......

更新:当您添加Timer并让其Tick删除透明的第二个Point时,您可以看到第一个Point如何从0跳到1。怪异..

答案 1 :(得分:0)

啊哈哈....

这不是错误。这是图表SERIESCHARTTYPE.POINT的正确行为。

图表的目的是显示[从左到右}的值[b]系列[/ b],而不是一组X,Y点。

系列值1为4 系列值2为1 系列值3为6 等等。

因此,错误不在图表中,而是了解图表类型的设计目的和意图。

您可以在此处看到数组中的每个元素如何仅使用该点的y值。

Not broke

难道你想要绘制一些点吗?也许您将图表图表混淆了? 如果您尝试绘制点数,这可能会有所帮助: https://www.daniweb.com/software-development/csharp/code/217204/function-plotting-in-c