C#系列中的空点

时间:2014-09-18 13:48:37

标签: c# charts

我创建了一个包含两个系列的图表,它们每天显示两个分销渠道(系列A和B)的值(AXIS Y - int)(AXIS X - 日期时间)。所有数据都来自外部数据库的数据表。直到我在星期一和星期六之间提供数据一切顺利。问题出现在周末。碰巧星期天通道A上没有数据。在这种情况下,带有条形图的图表会混乱。根本没有星期日酒吧(两个星期一而不是),但是通道A的数据会在一天后转移 我在下面的代码中写道:

public Chart DrawBar(OracleConnection oc, Chart ch)
{
    DataTable dt = GenerateData(oc, queryBar());
    Chart chart1 = ch;
    foreach (string s in channel)
    {
        chart1.Series.Add(s);
        chart1.Series[s].XValueType = ChartValueType.DateTime;
        chart1.Series[s].YValueType = ChartValueType.Double;
        chart1.Series[s].ChartType = SeriesChartType.StackedColumn;
    }
    foreach (DataRow row in dt.Rows)  
    {
        string series = row["SOURCE"].ToString();
        DateTime X = (DateTime)row["DATA"];
        String Y = row["HOWMUCH"].ToString();
        chart1.Series[series].Points.AddXY(X.ToShortDateString(), Convert.ToDouble(Y));
        chart1.Series[series].IsValueShownAsLabel = true;
    }
    return chart1;
}

我找到了一些关于Series.IsXValueIndexed以及Chart1.DataManipulator.InsertEmptyPoints的信息,但我无法理解如何在我的代码中使用它。

1 个答案:

答案 0 :(得分:0)

问题是您在添加点时将DateTime转换为字符串。保留为DateTime,它将处理空点:

DateTime X = (DateTime)row["DATA"];
String Y = row["HOWMUCH"].ToString();
chart1.Series[series].Points.AddXY(X, Convert.ToDouble(Y));

另外,如果你知道你的专栏“HOWMUCH”是double,那么你可以这样做,这有点清晰:

double Y = row.Field<double>("HOWMUCH");
chart1.Series[series].Points.AddXY(X, Y);