ASP.NET堆积条形图显示总计在堆栈顶部

时间:2014-06-28 18:49:51

标签: c# asp.net charts

我有一个带有多个系列的堆积条形图,我想在每个堆栈列的顶部显示堆栈总数作为标签。

2 个答案:

答案 0 :(得分:2)

设置系列'按顺序排列'总计'系列具有透明色,未在图例中显示

  TgtChart.Series.Add("Series1");
  TgtChart.Series["Series1"].Color = System.Drawing.Color.LightGreen;
  TgtChart.Series.Add("Series2");
  TgtChart.Series["Series12"].Color = System.Drawing.Color.HotPink;
  TgtChart.Series.Add("SeriesTotal");
  TgtChart.Series["SeriesTotal"].Color = System.Drawing.Color.Transparent;
  TgtChart.Series["SeriesTotal"].IsVisibleInLegend = false;

使用所需的X轴标签和Y轴值添加系列点,同时跟踪最高总值 - 稍后需要它。

  TgtChart.Series["Series1"].Points.AddXY("XIncrement1", YValueSeries1);
  TgtChart.Series["Series2"].Points.AddXY("XIncrement1", YValueSeries2);
  TgtChart.Series["SeriesTotal"].Points.AddXY("XIncrement1"], SeriesTotal);
  if (maxTot < SeriesTotal) maxTot = SeriesTotal;

浏览总系列中的所有点并将标签设置为等于Y值,然后将Y值设置为所有点的相同值 - 我使用了最高总值的一小部分,因此所有总标签都将具有相同的偏移量。标签总是位于(透明)条的中间,因此您可能需要使用该分数来获得各种堆栈/总计的良好外观。如果堆栈总数为零,我不想显示标签。肯定有一种更清洁的方法可以确保常量SeriesTotal堆栈高度不小于1。

foreach (DataPoint dp in TgtChart.Series["SeriesTotal"].Points)
{
  if (TgtChart.Series[ii].Name == "Total RTAs")
  {
    dp.Label = dp.YValues[0].ToString();
    dp.YValues[0] = (int)(maxTot / 20) != 0 ? (int)(maxTot / 20): 1;
  if (dp.YValues[0] != 0)
    dp.IsValueShownAsLabel = true;
  else
    dp.IsValueShownAsLabel = false;
}

答案 1 :(得分:0)

            Chart1.Series.Add("Total")

            Chart1.Series("Total").ChartType = SeriesChartType.Point
            Chart1.Series("Total").MarkerSize = 5  'change this to 0 if you don't want a marker at the top  of the col.
            Chart1.Series("Total").MarkerStyle = MarkerStyle.Diamond
            Chart1.Series("Total").IsValueShownAsLabel = True


            For k As Integer = 0 To 1 'if there are 2 columns to add
                Dim total As Double = 0
                For j As Integer = 0 To 1
                    total += Chart1.Series(j).Points(k).YValues(0)
                Next
                Chart1.Series("Total").Points.AddY(total)
            Next