将X轴标签与图表列对齐(ASP.Net图表控件)

我正在尝试使用ASP.Net Chart控件创建一个图表,该控件在X轴上具有特定的数值,在Y轴上具有它们的频率计数。 这是我想要替换的图表框架的一个例子:

在此处输入图像描述

在上面的示例中,X轴标签与列对齐。 但是,使用ASP.Net Chart控件,而不是标记代表这些特定值的列(例如1492,2984),控件是以圆形间隔标记而不是与列排列(例如2000,4000),因为您可以见下文:

在此处输入图像描述

我发现其他类似的post建议将ChartArea.AxisX.Interval设置为1.我试过了,但是X轴标签因某种原因消失了,如下所示:

在此处输入图像描述

这是我用来创建和填充图表的代码(减去设置各种颜色属性):

 DataTable newDt = GetChartDataTable(); chart.DataSource = newDt; chart.Series.Add("Series1"); chart.Series["Series1"].YValueMembers = "Frequency"; chart.Series["Series1"].XValueMember = "RoundedValue"; chart.ChartAreas["ChartArea1"].AxisX.Title = "kbps"; chart.ChartAreas["ChartArea1"].AxisX.TitleFont = new Font("Sans Serif", 10, FontStyle.Bold); chart.ChartAreas["ChartArea1"].AxisY.Title = "Frequency"; chart.ChartAreas["ChartArea1"].AxisY.TitleFont = new Font("Sans Serif", 10, FontStyle.Bold); chart.Titles["Title1"].Text = chartTitle; chart.Titles["Title1"].Font = new Font("Sans Serif", 10, FontStyle.Bold); chart.Series["Series1"].ChartType = System.Web.UI.DataVisualization.Charting.SeriesChartType.Column; chart.Series["Series1"]["ShowMarkerLines"] = "True"; chart.DataBind(); 

您应该将IsXValueIndex设置为true

像这样:
chart.Series["Series1"].IsXValueIndexed = true;

例:

 // Creating the series Series series1 = new Series("Series1"); // Setting the Chart Types series1.ChartType = SeriesChartType.Column; // Adding some points series1.Points.AddXY(1492, 12); series1.Points.AddXY(2984, 0); series1.Points.AddXY(4476, 1); series1.Points.AddXY(5968, 2); series1.Points.AddXY(7460, 2); series1.Points.AddXY(8952, 12); series1.Points.AddXY(10444, 4); series1.Points.AddXY(11936, 3); series1.Points.AddXY(13428, 3); series1.Points.AddXY(14920, 5); series1.Points.AddXY(16412, 1); Chart1.Series.Add(series1); Chart1.Width = 600; Chart1.Height = 600; // Series visual series1.YValueMembers = "Frequency"; series1.XValueMember = "RoundedValue"; series1.BorderWidth = 1; series1.ShadowOffset = 0; series1.Color = Drawing.Color.Red; series1.IsXValueIndexed = true; // Setting the X Axis Chart1.ChartAreas("ChartArea1").AxisX.IsMarginVisible = true; Chart1.ChartAreas("ChartArea1").AxisX.Interval = 1; Chart1.ChartAreas("ChartArea1").AxisX.Maximum = Double.NaN; Chart1.ChartAreas("ChartArea1").AxisX.Title = "kbps"; Chart1.ChartAreas("ChartArea1").AxisX.TitleFont = new Font("Sans Serif", 10, FontStyle.Bold); // Setting the Y Axis Chart1.ChartAreas("ChartArea1").AxisY.Interval = 2; Chart1.ChartAreas("ChartArea1").AxisY.Maximum = Double.NaN; Chart1.ChartAreas("ChartArea1").AxisY.Title = "Frequency"; Chart1.ChartAreas("ChartArea1").AxisY.TitleFont = new Font("Sans Serif", 10, FontStyle.Bold);