我创建了一个包含两个系列的图表,它们每天显示两个分销渠道(系列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的信息,但我无法理解如何在我的代码中使用它。
答案 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);