ASP.NET堆叠条形图显示堆栈顶部的总数

本文关键字:顶部 堆栈 显示 NET 条形图 ASP | 更新日期: 2023-09-27 18:10:43

我有一个包含几个系列的堆叠条形图,我想在每个堆叠列的顶部以标签的形式显示堆栈的总数

ASP.NET堆叠条形图显示堆栈顶部的总数

将'total'系列设置为透明颜色,且不显示在图例中

  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值设置为相同的值-我使用了最高总数的一小部分,因此所有总标签将具有相同的偏移量。标签总是位于(透明)条的中间,所以你可能需要使用分数来获得各种堆栈/总数的良好外观。如果堆栈总数为0,我不想显示标签。肯定有一种更简洁的方法来确保常量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;
}
            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