当绘制2个或更多系列时,MSChart x轴时间

时间:2014-12-04 01:27:39

标签: c# mschart

我正在同一个MSChart上的CSV文件中绘制多个系列的数据。虽然两个系列的TimeString值可能不一致(一组点在另一个之后聚集),但我得到两个图的数据重叠,图表上的时间戳来自最后一个系列。

我想了解如何用绝对时间显示每个系列的数据,因此在比较这些图时,每个系列的时间成分是相对正确的。如果它们在时间上重叠,则XY图可以重叠。如果它们来自不同的时间段,那么这些地块应该是相邻的。

这就是我将CSV数据读入我的DataTables

的方法
DataTable[] seriesData;
...
private void BindData(int pen, string fname)
{
    try
    {
        if (System.IO.File.Exists(fname))
        {
            seriesData[pen - 1] = GetDataTable(fname);
            DataTableReader myReader = seriesData[pen - 1].CreateDataReader();
            chart1.Series[pen - 1].Points.DataBindXY(myReader, "TimeString", myReader, "VarValue");
            chart1.Series[pen - 1].ChartType = SeriesChartType.Line;
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show("Exception: " + ex.Message);
    }
}

1 个答案:

答案 0 :(得分:0)

我无法确认这一点,但我看不到您的数据。

以下是一个示例,其中包含从Random对象R中提取的简单测试数据及其结果:

Series S1 = chart1.Series[0];
Series S2 = chart1.Series[1];
S1.ChartType = SeriesChartType.Line;
S2.ChartType = SeriesChartType.Line;
S1.Color = Color.Red;
S2.Color = Color.Green;
S1.XValueType = ChartValueType.Time;
S2.XValueType = ChartValueType.Time;

for (int d = 100; d < 200; d++)
{
    DateTime dt = DateTime.Now.AddMinutes(d);
    S1.Points.AddXY(dt, 100 + R.Next(100));
}
for (int d = 150; d < 300; d++)
{
    DateTime dt = DateTime.Now.AddMinutes(d);
    S2.Points.AddXY(dt, 200 + R.Next(100));
}

您如何设置XValueType

overlapping times