我试图随着时间的推移显示对不同网站的访问,它运行正常。 但是当我开始跟踪其他网站后,当我尝试添加另一个我开始跟踪的网站时,图表会显示它就像我与其他网站一起启动它一样。 例如,当我有这些数组时:
{
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;
}
}
列表包含数组,第一个数组包含日期,第二个数组包含访问次数,第三个数组只包含一个对象,即系列名称。
答案 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);
希望这会有所帮助:)