Microsoft C#Chart Control显示错误数据

时间:2011-08-01 06:33:36

标签: c# charts

我试图随着时间的推移显示对不同网站的访问,它运行正常。 但是当我开始跟踪其他网站后,当我尝试添加另一个我开始跟踪的网站时,图表会显示它就像我与其他网站一起启动它一样。 例如,当我有这些数组时:

{
dates[] { "8/1", "8/2", "8/3" }
visits[] { 100, 74, 96 }
}
{
dates[] { "8/1", "8/2", "8/3" }
visits[] { 52, 86, 23 }
}

它运行正常..但是当我有这些数组时:

{
dates[] { "8/1", "8/2", "8/3" }
visits[] { 100, 74, 96 }
}
{
dates[] { "8/3" }
visits[] { 52 }
}

它向我展示了第二次,因为它在8/1上有52次访问,而不是8/3

这是我的代码:

 public void drawChart(List<object[]> data)
        {
            chart1.Series.Clear();
            for (int i = 0; i < data.Count; i = i + 3)
            {
                chart1.Series.Add(data[i+2][0].ToString());
                chart1.Series[i / 3].Points.DataBindXY(data[i], data[i+1]);
                chart1.Series[i / 3].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Line;
                chart1.Series[i / 3].IsValueShownAsLabel = true;
                chart1.Series[i / 3].BorderWidth = 3;
            }
        }

列表包含数组,第一个数组包含日期,第二个数组包含访问次数,第三个数组只包含一个对象,即系列名称。

2 个答案:

答案 0 :(得分:0)

请参阅Microsoft Chart Controls and X-Axis time scale format

将字符串作为X值传递给我认为是愚蠢的标签。 您需要将它们转换为日期,以便轴能够正确定位它们,然后使用标签格式显示您想要的内容。

this.chart.ChartAreas["Default"].AxisX.LabelStyle.Format = "DD/MM";

答案 1 :(得分:0)

为什么不直接绑定到DateTime?

IList<DateTime> listx = new List<DateTime>();
IList<double> listy = new List<double>();

//iterate and add your values to the two lists: listx and listy

//when you're done, bind the lists to the points collection
chart1.Series[i / 3].Points.DataBindXY(listx, listy);

希望这会有所帮助:)