简体   繁体   English

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

[英]Line up X axis labels with chart columns (ASP.Net Chart control)

I'm trying to make a chart using the ASP.Net Chart control that has specific numerical values on the X axis and their frequency count on the Y axis. 我正在尝试使用ASP.Net Chart控件创建一个图表,该控件在X轴上具有特定的数值,在Y轴上具有它们的频率计数。 Here is an example of what I want from the charting framework I am replacing: 这是我想要替换的图表框架的一个例子:

在此输入图像描述

In the above example, the X axis labels line up with the columns. 在上面的示例中,X轴标签与列对齐。 But, with the ASP.Net Chart control, instead of labeling the columns which represent these specific values (eg 1492, 2984), the control is labeling at rounded intervals and not lining up with the columns (eg 2000, 4000) as you can see below: 但是,使用ASP.Net Chart控件,而不是标记代表这些特定值的列(例如1492,2984),控件是以圆形间隔标记而不是与列排列(例如2000,4000),因为您可以见下文:

在此输入图像描述

I found other similar postings that recommended setting the ChartArea.AxisX.Interval to 1. I tried that, but then the X axis label disappears for some reason as you can see below: 我发现其他类似的帖子建议将ChartArea.AxisX.Interval设置为1.我试过了,但是X轴标签因某种原因消失了,如下所示:

在此输入图像描述

Here is the code I'm using to create and populate the chart (minus setting various color attributes): 这是我用来创建和填充图表的代码(减去设置各种颜色属性):

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();

You should set IsXValueIndex to true . 您应该将IsXValueIndex设置为true

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

Example: 例:

// 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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM