ASP.NET StackedColumn图表 – Axis Trouble

我正在构建一个Asp.net Stacked Column图表。

以下是它的外观:

图表图像

以下是它的外观:

目标图表图像

忽略图表上的数字,但是看看X轴 – 为什么它没有出现在数据中时给我1148,1153,1163。

这是我的数据:

数据图像

这是代码:

Dim chart As New Chart chart.ID = "Chart1" Dim chartareas As New ChartArea chart.ChartAreas.Add(chartareas) chart.DataBindCrossTable(DtFinalRecords.DefaultView, "OutcomeScore", "TermID", "RecordsPerGroup", "Label=RecordsPerGroup") chart.ChartAreas(0).AxisX.MajorGrid.Enabled = False chart.ChartAreas(0).AxisY.MajorGrid.Enabled = False For Each cs As Series In chart.Series cs.ChartType = SeriesChartType.StackedColumn Next pnlcharts.Controls.Add(chart) 

任何帮助,将不胜感激。 谢谢!

DataBindCrossTable可以最大限度地完成工作,只需要您最少的编码工作量。 但是,如果您对默认行为不满意,则必须明确自定义它。 在您的特定情况下,您希望为数据点分配自定义标签:

 protected void Page_Load(object sender, EventArgs e) { Chart1.Palette = ChartColorPalette.None; Chart1.PaletteCustomColors = new Color[] { ColorTranslator.FromHtml("#DF5B59"), ColorTranslator.FromHtml("#E0D773 "), ColorTranslator.FromHtml("#8AAC53"), ColorTranslator.FromHtml("#6A843F") }; Chart1.ChartAreas[0].AxisY.MajorGrid.Enabled = false; Chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false; Chart1.ChartAreas[0].AxisX.Interval = 1; var rows = from row in dt.AsEnumerable() select row.Field("OutcomeScore"); Chart1.Series.Clear(); foreach (int i in rows.Distinct()) Chart1.Series.Add(new Series { Name = i.ToString(), ChartType = SeriesChartType.StackedColumn }); foreach (DataRow dr in dt.Rows) { DataPoint dp = new DataPoint(); dp.AxisLabel = dr["TermID"].ToString(); dp.Label = dr["RecordsPerGroup"].ToString(); dp.XValue = (int)dr["TermID"]; dp.YValues[0] = (int)dr["RecordsPerGroup"]; string name = dr["OutcomeScore"].ToString(); Chart1.Series[name].Points.Add(dp); } } 

在此处输入图像描述