2013-11-04 17 views
6

Sto provando a creare un grafico utilizzando il controllo grafico ASP.Net che ha valori numerici specifici sull'asse X e il loro conteggio di frequenza sull'asse Y . Ecco un esempio di quello che voglio da quadro grafici Sto sostituendo:Allineare le etichette dell'asse X con le colonne del grafico (controllo grafico ASP.Net)

enter image description here

Nell'esempio di cui sopra, le etichette degli assi X allineano con le colonne. Ma, con il controllo grafico ASP.Net, invece di etichettare le colonne che rappresentano questi valori specifici (ad es. 1492, 2984), il controllo è etichettato a intervalli arrotondati e non allineato con le colonne (ad esempio 2000, 4000) come è possibile vedi sotto:

enter image description here

ho trovato altri messaggi simili che consiglia di impostare lo ChartArea.AxisX.Interval a 1. Ci ho provato, ma poi l'etichetta dell'asse X scompare per qualche motivo, come potete vedere qui sotto:

enter image description here

Ecco il codice Sto usando per creare e popolare il grafico (meno impostando vari attributi di colore):

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

risposta

5

si dovrebbe impostare IsXValueIndex a true.

Ti piace questa:
chart.Series["Series1"].IsXValueIndexed = true;

Esempio:

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

Questo ha fatto il trucco se usato in combinazione con l'impostazione 'AxisX.Interval = 1'! Grazie mille! – jokeefe

Problemi correlati