我有以下代码。 我已经硬编码了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++;
}
}
更新:
需要添加此行,仅适用于.NET 4.5
chart1.Series["ABC"].CustomProperties = "IsXAxisQuantitative=True";
答案 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值。
难道你想要绘制一些点吗?也许您将图表与图表混淆了? 如果您尝试绘制点数,这可能会有所帮助: https://www.daniweb.com/software-development/csharp/code/217204/function-plotting-in-c