Gallery
Stack Total Horizontal
<%@ Page Language="C#" Description="dotnetCHARTING Component" %>
<%@ Register TagPrefix="dotnet" Namespace="dotnetCHARTING" Assembly="dotnetCHARTING" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Drawing.Drawing2D" %>
<%@ Import Namespace="dotnetCHARTING.Mapping" %>
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
// Demonstrates how to label the total values of horizontal column stacks.
Chart.Type = ChartType.ComboHorizontal;
Chart.Size = "600x350";
Chart.TempDirectory = "temp";
Chart.Debug = true;
//Chart.Title = ".netCHARTING Sample";
Chart.DefaultElement.ShowValue = true;
Chart.XAxis.Scale = Scale.Stacked;
// *DYNAMIC DATA NOTE*
// This sample uses random data to populate the chart. To populate
// a chart with database data see the following resources:
// - Classic samples folder
// - Help File > Data Tutorials
// - Sample: features/DataEngine.aspx
SeriesCollection mySC = getRandomData();
// Clear the secondary alignment options of element labels.
foreach (Series ser in mySC)
{
ser.DefaultElement.SmartLabel.AlignmentSecondary.Clear();
foreach (Element el in ser.Elements)
{
el.SmartLabel.AlignmentSecondary.Clear();
}
}
// Create a total series that is invisible. Just used to place the totals labels.
Series total = mySC.Calculate("Total", Calculation.Sum);
double grandTotal = 0;
foreach (Element el in total.Elements)
{
el.SmartLabel.Text = el.YValue.ToString() ;
grandTotal += el.YValue;
el.YValue = 0;
}
total.DefaultElement.Marker.Type = ElementMarkerType.None;
total.DefaultElement.SmartLabel.Alignment = LabelAlignment.Top;
total.DefaultElement.SmartLabel.Font = new Font("Arial Black", 8, FontStyle.Bold);
total.LegendEntry.Visible = false;
Chart.ChartArea.LegendBox.ExtraEntries.Add(new LegendEntry("Total", grandTotal.ToString(), Color.Chocolate));
// Add the random data.
Chart.SeriesCollection.Add(mySC);
Chart.SeriesCollection.Add(total);
}
SeriesCollection getRandomData()
{
SeriesCollection SC = new SeriesCollection();
Random myR = new Random(7);
for (int a = 1; a < 5; a++)
{
Series s = new Series();
s.Name = "Series " + a.ToString();
for (int b = 1; b < 5; b++)
{
Element e = new Element();
e.Name = "Element " + b.ToString();
e.YValue = myR.Next(20, 50);
s.Elements.Add(e);
}
SC.Add(s);
}
return SC;
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>.netCHARTING Sample</title>
</head>
<body>
<div align="center">
<dotnet:Chart ID="Chart" runat="server" />
</div>
</body>
</html>
<%@ Page Language="vb" Description="dotnetCHARTING Component" %>
<%@ Register TagPrefix="dotnet" Namespace="dotnetCHARTING" Assembly="dotnetCHARTING" %>
<%@ Import Namespace="System.Drawing" %>
<%@ Import Namespace="System.Drawing.Drawing2D" %>
<%@ Import Namespace="dotnetCHARTING.Mapping" %>
<script runat="server">
Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
' Demonstrates how to label the total values of horizontal column stacks.
Chart.Type = ChartType.ComboHorizontal
Chart.Size = "600x350"
Chart.TempDirectory = "temp"
Chart.Debug = True
'Chart.Title = ".netCHARTING Sample";
Chart.DefaultElement.ShowValue = True
Chart.XAxis.Scale = Scale.Stacked
' *DYNAMIC DATA NOTE*
' This sample uses random data to populate the chart. To populate
' a chart with database data see the following resources:
' - Classic samples folder
' - Help File > Data Tutorials
' - Sample: features/DataEngine.aspx
Dim mySC As SeriesCollection = getRandomData()
' Clear the secondary alignment options of element labels.
For Each ser As Series In mySC
ser.DefaultElement.SmartLabel.AlignmentSecondary.Clear()
For Each el As Element In ser.Elements
el.SmartLabel.AlignmentSecondary.Clear()
Next el
Next ser
' Create a total series that is invisible. Just used to place the totals labels.
Dim total As Series = mySC.Calculate("Total", Calculation.Sum)
Dim grandTotal As Double = 0
For Each el As Element In total.Elements
el.SmartLabel.Text = el.YValue.ToString()
grandTotal += el.YValue
el.YValue = 0
Next el
total.DefaultElement.Marker.Type = ElementMarkerType.None
total.DefaultElement.SmartLabel.Alignment = LabelAlignment.Top
total.DefaultElement.SmartLabel.Font = New Font("Arial Black", 8, FontStyle.Bold)
total.LegendEntry.Visible = False
Chart.ChartArea.LegendBox.ExtraEntries.Add(New LegendEntry("Total", grandTotal.ToString(), Color.Chocolate))
' Add the random data.
Chart.SeriesCollection.Add(mySC)
Chart.SeriesCollection.Add(total)
End Sub
Function getRandomData() As SeriesCollection
Dim SC As SeriesCollection = New SeriesCollection()
Dim myR As Random = New Random(7)
For a As Integer = 1 To 4
Dim s As Series = New Series()
s.Name = "Series " & a.ToString()
For b As Integer = 1 To 4
Dim e As Element = New Element()
e.Name = "Element " & b.ToString()
e.YValue = myR.Next(20, 50)
s.Elements.Add(e)
Next b
SC.Add(s)
Next a
Return SC
End Function
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>.netCHARTING Sample</title>
</head>
<body>
<div align="center">
<dotnet:Chart ID="Chart" runat="server" />
</div>
</body>
</html>
- Sample FilenameStackTotalHorizontal.aspx
- Version7.0
- Uses DatabaseNo