2017-04-04 3 views
3

Ich baue ein Asp.net Stacked Column Diagramm.ASP.NET StackedColumn Diagramm - Axis Trouble

Hier ist, wie es aussieht:

Chart Image

Hier ist, wie es aussehen sollte:

Goal Chart Image

Ignorieren Sie die Zahlen auf der Karte aber Blick auf die X-Achse - Warum es gibt mir 1148,1153, 1163, wenn sie nicht in den Daten erscheinen.

Hier ist meine Daten:

Data Image

Hier ist der Code:

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) 

Jede Hilfe würde geschätzt. Vielen Dank!

+0

eine C# Antwort akzeptabel ist für Sie? Ich bin nicht wirklich ein VB-Typ ...: o ( – jsanalytics

Antwort

1

DataBindCrossTable macht den besten Job, den es mit minimalem Programmieraufwand von Ihnen erfordert. Aber wenn Sie mit dem Standardverhalten nicht zufrieden sind, müssen Sie es explizit anpassen. In Ihrem speziellen Fall möchten Sie benutzerdefinierte Etiketten auf Ihre Datenpunkte zuweisen:

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<int>("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); 
    } 
} 

enter image description here

+0

Vielen Dank !! Das hat funktioniert. Ich habe auch geupdated! – dee

+0

Irgendeine Idee, wie ich Marker hinzufügen oder einen bestimmten Datenpunkt auf gestapelten Balken/Säulendiagrammen markieren kann ? Das ist mein letztes Problem mit diesen Charts und ich werde fertig sein - http://stackoverflow.com/questions/43216347/asp-net-stackedbar-chart-markers – dee