I have a way to make this work.
Sorry for the long answer, but I found a way by which you try to implement this answer will affect if it works or not.
You need to set zero manually when you add points. Note. I could not do this job by adding zero points after the fact.
See the following example and screenshots: chart1.Series.Clear (); chart1.Series.Add (new series ()); chart1.Series.Add (new series ()); chart1.Series.Add (new series ()); chart1.Series.Add (new series ());
foreach (Series s in chart1.Series) { s.ChartType = SeriesChartType.StackedColumn; } //chart1.Series[0].Points.Add(new DataPoint(0, 0)); chart1.Series[0].Points.Add(new DataPoint(1, 3)); chart1.Series[0].Points.Add(new DataPoint(2, 3)); chart1.Series[0].Points.Add(new DataPoint(3, 3)); chart1.Series[1].Points.Add(new DataPoint(0, 3)); //chart1.Series[1].Points.Add(new DataPoint(1, 0)); chart1.Series[1].Points.Add(new DataPoint(2, 3)); chart1.Series[1].Points.Add(new DataPoint(3, 3)); chart1.Series[2].Points.Add(new DataPoint(0, 3)); chart1.Series[2].Points.Add(new DataPoint(1, 3)); //chart1.Series[2].Points.Add(new DataPoint(2, 0)); chart1.Series[2].Points.Add(new DataPoint(3, 3)); chart1.Series[3].Points.Add(new DataPoint(0, 3)); chart1.Series[3].Points.Add(new DataPoint(1, 3)); chart1.Series[3].Points.Add(new DataPoint(2, 3)); //chart1.Series[3].Points.Add(new DataPoint(3, 0)); chart1.SaveImage("C:\\Before.png", ChartImageFormat.Png);
Image of "before.png": 
Now delete the comments for the series without any data points for the given x value:
(Note: I didnβt find this to work if you added points at a given x-value for the values ββwhere you do y = 0 at the end - aka right before saving the image. The order of the points in the series seems to matter for StackedColumn, I have never worked with this type, except to explore how to answer this question, so that they can be well known to users of this type)
chart1.Series.Clear(); chart1.Series.Add(new Series()); chart1.Series.Add(new Series()); chart1.Series.Add(new Series()); chart1.Series.Add(new Series()); foreach (Series s in chart1.Series) { s.ChartType = SeriesChartType.StackedColumn; } chart1.Series[0].Points.Add(new DataPoint(0, 0)); chart1.Series[0].Points.Add(new DataPoint(1, 3)); chart1.Series[0].Points.Add(new DataPoint(2, 3)); chart1.Series[0].Points.Add(new DataPoint(3, 3)); chart1.Series[1].Points.Add(new DataPoint(0, 3)); chart1.Series[1].Points.Add(new DataPoint(1, 0)); chart1.Series[1].Points.Add(new DataPoint(2, 3)); chart1.Series[1].Points.Add(new DataPoint(3, 3)); chart1.Series[2].Points.Add(new DataPoint(0, 3)); chart1.Series[2].Points.Add(new DataPoint(1, 3)); chart1.Series[2].Points.Add(new DataPoint(2, 0)); chart1.Series[2].Points.Add(new DataPoint(3, 3)); chart1.Series[3].Points.Add(new DataPoint(0, 3)); chart1.Series[3].Points.Add(new DataPoint(1, 3)); chart1.Series[3].Points.Add(new DataPoint(2, 3)); chart1.Series[3].Points.Add(new DataPoint(3, 0)); // If you add the empty points here, it does not seem to work. // Empty points are as follows, and are already added above in the 'after' example. // chart1.Series[0].Points.Add(new DataPoint(0, 0)); // chart1.Series[1].Points.Add(new DataPoint(1, 0)); // chart1.Series[2].Points.Add(new DataPoint(2, 0)); // chart1.Series[3].Points.Add(new DataPoint(3, 0)); chart1.SaveImage("C:\\After.png", ChartImageFormat.Png);
Image of "after.png": 
So, given that after the fact you cannot add zero points (although you can insert them?), You will need to change your code to something like this:
var allPossibleGroups = t.StudentReports; var groups = t.StudentReports .Where<StudentReport>(rep => rep.IsComplete && rep.FirstSaveTimestamp.HasValue) .GroupBy<StudentReport, DateTime>(rep => rep.FirstSaveTimestamp.Value.Date); bool hasPoints = false; foreach (var g in allPossibleGroups) { if(groups.ContainsKey(g)) { series.Points.AddXY(g.Key, g.Count()); hasPoints = true; } else { series.Points.AddXY(g.Key, 0); } }
Sorry for the long blocks of code, but this example was necessary to demonstrate how to make it work without falling into the trap of adding empty dots (where y = 0) at the end, as this will not work.
Let me know if you need more help.