【问题标题】:ASP.NET StackedColumn chart - Axis TroubleASP.NET StackedColumn 图 - 轴故障
【发布时间】:2017-04-04 15:12:55
【问题描述】:

我正在构建一个 Asp.net 堆积柱形图。

这是它的外观:

它应该是这样的:

忽略图表上的数字,但看看 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)

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

【问题讨论】:

  • 您可以接受 C# 答案吗?我不是真正的 VB 人... :o(

标签: c# asp.net .net vb.net charts


【解决方案1】:

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

【讨论】:

  • 非常感谢!!这行得通。我也投了赞成票!
  • 知道如何在堆积条形图/柱形图上添加标记或突出显示特定数据点吗?这是我对这些图表的最后一个问题,我将完成 - stackoverflow.com/questions/43216347/…
猜你喜欢
  • 2015-09-19
  • 2012-02-22
  • 2013-08-09
  • 1970-01-01
  • 1970-01-01
  • 2014-10-19
  • 2015-10-26
  • 2014-06-24
  • 1970-01-01
相关资源
最近更新 更多