ASP.NET堆叠条形图显示堆栈顶部的总数
本文关键字:顶部 堆栈 显示 NET 条形图 ASP | 更新日期: 2023-09-27 18:10:43
我有一个包含几个系列的堆叠条形图,我想在每个堆叠列的顶部以标签的形式显示堆栈的总数
将'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