Implementing Syncfusion ASP.NET Core Accumulation Charts
A comprehensive skill for implementing Syncfusion's ASP.NET Core Accumulation Chart component. This component renders circular data visualizations including Pie, Doughnut, Pyramid, and Funnel charts using Scalable Vector Graphics (SVG).
When to Use This Skill
Use this skill when you need to:
- Create pie, doughnut, pyramid, or funnel charts in ASP.NET Core applications
- Visualize proportional data or percentage distributions
- Display hierarchical data with pyramid/funnel charts
- Add data labels, tooltips, and legends to accumulation charts
- Implement interactive features (exploding slices, selection, drill-down)
- Handle grouped data or empty points in charts
- Export or print accumulation charts
- Make charts accessible (WCAG 2.2 compliant)
- Dynamically update chart data in real-time
- Customize chart appearance with themes, colors, and gradients
Component Overview
AccumulationChart is a circular graphics component that divides data into segments to illustrate numerical proportions. It supports:
- Chart Types: Pie (including Doughnut variant), Pyramid, Funnel
- Note: Doughnut is achieved by setting on a Pie chart, not a separate type
- Smart Labels: Automatic label positioning to prevent overlapping
- Grouping: Combine small data points based on value or count
- Semi-Charts: Customize start and end angles for semi-pie/doughnut
- Legend: Display additional point information
- Tooltips: Interactive data point details
- Empty Points: Graceful handling of missing data
- Accessibility: Full WCAG 2.2 Level A & AA compliance
- Export: PNG, JPEG, SVG, PDF formats
- Print: Direct browser printing support
Documentation and Navigation Guide
Getting Started
📄 Read: references/getting-started.md
When to read: Setting up accumulation charts for the first time, or need complete installation and basic implementation guidance.
What you'll learn:
- Prerequisites and system requirements
- Installing Syncfusion NuGet packages
- Registering tag helpers and script resources
- Creating your first pie/doughnut chart
- Basic data binding (dataSource, xName, yName)
- CSS theme imports and script manager setup
- Running and testing the chart
- Complete minimal working example
Chart Types and Variants
📄 Read: references/chart-types.md
When to read: Need to implement specific chart types (Pie, Doughnut, Pyramid, Funnel) or customize chart geometry and appearance.
What you'll learn:
- Pie chart implementation and configuration
- Doughnut chart with inner radius and center labels
- Pyramid chart with width, gap, and neck customization
- Funnel chart with neck dimensions
- Radius customization for all chart types
- Start and end angles for semi-pie/semi-doughnut
- Exploding slices (single and multiple points)
- Chart center positioning
- Complete code examples for each type
Data Visualization Features
📄 Read: references/data-visualization.md
When to read: Enhancing charts with data labels, tooltips, legends, colors, or custom styling.
What you'll learn:
- Data label visibility, positioning, and templates
- Smart labels for overlap prevention
- Connector lines for outside labels
- Tooltip configuration and templates
- Legend positioning, alignment, and customization
- Title and subtitle configuration
- Point colors and gradient fills
- Text mapping from data source
- Border and margin customization
- Complete styling patterns
Data Handling
📄 Read: references/data-handling.md
When to read: Working with complex data scenarios like grouping small values, handling missing data, or updating charts dynamically.
What you'll learn:
- Grouping points by value or count threshold
- Group settings (threshold, mode, color, name)
- Empty points handling (null/undefined values)
- Empty point modes (Zero, Drop, Average, Gap)
- Dynamic data updates and live scenarios
- Data source binding patterns
- Sorting and ordering data
- Edge cases and troubleshooting
Advanced Features
📄 Read: references/advanced-features.md
When to read: Implementing annotations, export/print functionality, or migrating from EJ1 to EJ2.
What you'll learn:
- Chart annotations (text, shapes, images)
- Annotation positioning (coordinate, region, alignment)
- Export to image formats (PNG, JPEG, SVG)
- Export to PDF
- Print functionality and customization
- EJ1 to EJ2 API migration guide
- Performance optimization tips
- Complex implementation patterns
Accessibility
📄 Read: references/accessibility.md
When to read: Making charts accessible for users with disabilities or ensuring WCAG 2.2 compliance.
What you'll learn:
- WCAG 2.2 Level A & AA compliance features
- Keyboard navigation (Tab, arrow keys, Enter)
- ARIA attributes and roles
- Screen reader support and announcements
- High contrast theme support
- Focus indicators and visual feedback
- Color contrast requirements
- Accessible color palettes
- Testing with assistive technologies
- Complete accessible chart implementation
Quick Start Example
Here's a minimal example to render a pie chart in ASP.NET Core:
1. Install Package
bash
Install-Package Syncfusion.EJ2.AspNet.Core -Version {{ site.releaseversion }}
2. Register Tag Helper (~/Pages/_ViewImports.cshtml)
csharp
@addTagHelper *, Syncfusion.EJ2
3. Add Scripts (~/Pages/Shared/_Layout.cshtml)
html
<head>
<!-- Syncfusion CSS -->
<link href="https://cdn.syncfusion.com/ej2/{{ site.ej2version }}/material.css" rel="stylesheet" />
<!-- Syncfusion JS -->
<script src="https://cdn.syncfusion.com/ej2/{{ site.ej2version }}/dist/ej2.min.js"></script>
</head>
<body>
<!-- Content -->
<ejs-scripts></ejs-scripts>
</body>
4. Create Pie Chart (~/Pages/Index.cshtml)
cshtml
@{
List<PieChartData> chartData = new List<PieChartData>
{
new PieChartData { xValue = "Chrome", yValue = 37 },
new PieChartData { xValue = "Firefox", yValue = 22 },
new PieChartData { xValue = "Safari", yValue = 19 },
new PieChartData { xValue = "Edge", yValue = 12 },
new PieChartData { xValue = "Others", yValue = 10 }
};
}
<ejs-accumulationchart id="pieChart">
<e-accumulation-series-collection>
<e-accumulation-series dataSource="@chartData" xName="xValue" yName="yValue">
</e-accumulation-series>
</e-accumulation-series-collection>
</ejs-accumulationchart>
5. Define Data Model (~/Pages/Index.cshtml.cs or separate class)
csharp
public class PieChartData
{
public string xValue { get; set; }
public double yValue { get; set; }
}
Result: A basic pie chart displaying browser usage statistics.
Common Patterns
Pattern 1: Doughnut Chart with Center Label
cshtml
<ejs-accumulationchart id="container">
<e-accumulation-series-collection>
<e-accumulation-series dataSource="chartData" xName="x" yName="y" innerRadius="65%">
</e-accumulation-series>
</e-accumulation-series-collection>
<e-accumulationchart-centerlabel text="Mobile<br>Browsers<br>Statistics">
</e-accumulationchart-centerlabel>
<e-accumulationchart-legendsettings visible="false">
</e-accumulationchart-legendsettings>
</ejs-accumulationchart>
Use Case: Dashboard KPIs with center text showing total value.
Pattern 2: Pie Chart with Smart Labels and Tooltips
cshtml
<ejs-accumulationchart id="smartLabelChart" enableSmartLabels="true">
<e-accumulation-series-collection>
<e-accumulation-series dataSource="@chartData" xName="xValue" yName="yValue">
<e-accumulationseries-datalabel visible="true"
position="Outside"
name="text">
<e-connectorstyle type="Curve"></e-connectorstyle>
</e-accumulationseries-datalabel>
</e-accumulation-series>
</e-accumulation-series-collection>
<e-accumulationchart-tooltipsettings enable="true" format="${point.x}: ${point.y}%">
</e-accumulationchart-tooltipsettings>
</ejs-accumulationchart>
Use Case: Preventing label overlap in charts with many small slices.
Pattern 3: Grouped Data with Small Values
cshtml
<ejs-accumulationchart id="groupedChart">
<e-accumulation-series-collection>
<e-accumulation-series dataSource="@chartData"
xName="xValue"
yName="yValue"
groupTo="11">
</e-accumulation-series>
</e-accumulation-series-collection>
</ejs-accumulationchart>
Use Case: Combining values below 11% into a single "Others" group.
Pattern 4: Funnel Chart with Export
cshtml
<button id="exportBtn">Export as PNG</button>
<ejs-accumulationchart id="funnelChart">
<e-accumulation-series-collection>
<e-accumulation-series dataSource="@chartData"
xName="xValue"
yName="yValue"
type="Funnel"
neckWidth="15%"
neckHeight="18%">
</e-accumulation-series>
</e-accumulation-series-collection>
</ejs-accumulationchart>
<script>
document.getElementById('exportBtn').onclick = function() {
var chart = document.getElementById('funnelChart').ej2_instances[0];
chart.export('PNG', 'funnel-chart');
};
</script>
Use Case: Sales funnel visualization with image export.
API Reference
AccumulationChart Class
Represents the main accumulation chart component. All properties are defined in the
namespace.
Constructor
csharp
public AccumulationChart()
Core Properties
| Property | Type | Default | Description | API Reference |
|---|
| AccumulationAccessibility
| null | Options to improve accessibility for accumulation chart elements | AccumulationAccessibility |
| List<AccumulationAnnotationSettings>
| null | Annotations for highlighting specific data points | AccumulationAnnotationSettings |
| | null | Background color (hex or rgba) | - |
| | null | Background image URL | - |
| | null | Chart border configuration | AccumulationChartBorder |
| | null | Center position of pie/doughnut (x, y percentages) | AccumulationChartCenter |
| AccumulationChartCenterLabel
| null | Center label configuration for doughnut charts | AccumulationChartCenterLabel |
| | null | Chart data collection | - |
| | true | Enable chart animation on load | - |
| | true | Enable border on mouse hover | - |
| | true | Enable export to JPEG, PNG, SVG, PDF, XLSX, CSV | - |
| | false | Sanitize untrusted HTML in chart content | - |
| | false | Persist component state across page reloads | - |
| | false | Enable right-to-left rendering | - |
| | true | Auto-arrange labels to prevent overlap | - |
| | - | Focus border color for accessibility | - |
| | 0 | Focus border margin | - |
| | 1.5 | Focus border width | - |
| | null | Chart height (e.g., "450px", "100%") | - |
| | "" | Color for highlighting data points on hover | - |
| AccumulationHighlightMode
| None | Highlight mode: None or Point | AccumulationHighlightMode |
| | None | Pattern for highlighting series/points | SelectionPattern |
| | false | Enable multiple point selection (requires selectionMode=Point) | - |
| AccumulationChartLegendSettings
| null | Legend configuration | AccumulationChartLegendSettings |
| | "" | Culture/localization override (default: en-US) | - |
| | null | Chart margins (left, right, top, bottom) | AccumulationChartMargin |
| | null | Template for empty chart state | - |
| | null | Initial selected point indexes | - |
| AccumulationSelectionMode
| None | Selection mode: None or Point | AccumulationSelectionMode |
| | None | Pattern for selected series/points | SelectionPattern |
| | null | Chart series collection | AccumulationSeries |
| | null | Chart subtitle text | - |
| AccumulationChartSubTitleStyle
| null | Subtitle font and styling | AccumulationChartSubTitleStyle |
| | Material | Visual theme | AccumulationTheme |
| | null | Chart title text | - |
| AccumulationChartTitleStyleSettings
| null | Title font and styling | AccumulationChartTitleStyleSettings |
| AccumulationChartTooltipSettings
| null | Tooltip configuration | AccumulationChartTooltipSettings |
| | false | Use thousand separator for numbers | - |
| | null | Chart width (e.g., "100px", "100%") | - |
Event Properties
| Event | Type | Description |
|---|
| | Triggered after export completes |
| | Triggered after animation completes |
| | Triggered before annotation renders |
| | Triggered before export starts |
| | Triggered before print starts |
| | Triggered before window resize |
| | Triggered on double-click |
| | Triggered on mouse click |
| | Triggered on mouse down |
| | Triggered when cursor leaves |
| | Triggered on mouse move/hover |
| | Triggered on mouse up |
| | Triggered after legend click |
| | Triggered before legend renders |
| | Triggered before chart loads |
| | Triggered after chart loads |
| | Triggered when point is clicked |
| | Triggered when point is hovered |
| | Triggered before point renders |
| | Triggered after window resize completes |
| | Triggered after selection completes |
| | Triggered before series renders |
| | Triggered before data label renders |
| | Triggered before tooltip renders |
AccumulationSeries Class
Represents a data series in the accumulation chart.
Properties
| Property | Type | Default | Description | API Reference |
|---|
| | null | Series data collection | - |
| | null | Field name for X values (categories) | - |
| | null | Field name for Y values (numeric data) | - |
| | "Pie" | Series type: Pie, Pyramid, Funnel (Doughnut = Pie + innerRadius) | - |
| | "80%" | Chart radius (percentage or pixels) | - |
| | "0%" | Inner radius for doughnut effect (percentage) | - |
| | 0 | Start angle in degrees (0-360) | - |
| | 360 | End angle in degrees (0-360) | - |
| | false | Enable explosion on click | - |
| | null | Index of pre-exploded point | - |
| | "10%" | Distance exploded slice moves | - |
| | null | Grouping threshold (value or percentage) | - |
| | "Value" | Group mode: Value or Point | - |
| | "Others" | Name for grouped points | - |
| | "Linear" | Pyramid mode: Linear or Surface | - |
| | "Standard" | Funnel mode: Standard or Trapezoidal | - |
| | "20%" | Funnel neck width (percentage) | - |
| | "20%" | Funnel neck height (percentage) | - |
| | "80%" | Pyramid/Funnel width (percentage) | - |
| | "80%" | Pyramid/Funnel height (percentage) | - |
| | 0 | Gap between pyramid/funnel segments | - |
| | null | Custom color palette | - |
| | null | Field name for point colors | - |
| | null | Event triggered before point renders | - |
| AccumulationDataLabelSettings
| null | Data label configuration | AccumulationDataLabelSettings |
| AccumulationChartEmptyPointSettings
| null | Empty point handling | AccumulationChartEmptyPointSettings |
| AccumulationChartConnector
| null | Connector line styling | AccumulationChartConnector |
| | null | Series border styling | AccumulationChartBorder |
| | SeriesType | Legend icon shape | LegendShape |
| | null | Field for custom tooltip content | - |
AccumulationDataLabelSettings Class
Configures data labels displayed on data points.
Properties
| Property | Type | Default | Description |
|---|
| | false | Show/hide data labels |
| | "Outside" | Label position: Inside or Outside |
| | null | Field name for label text |
| | null | HTML template for labels |
| | null | Number format (e.g., "p1", "n2", "c2") |
| | "Normal" | Text wrapping: Normal, Wrap, AnyWhere |
| | null | Max label width (pixels) |
| | null | Font configuration |
| | null | Label border configuration |
| | "Line" | Connector type: Line or Curve |
AccumulationChartLegendSettings Class
Configures the legend for the chart.
Properties
| Property | Type | Default | Description | API Reference |
|---|
| | false | Show/hide legend | - |
| | "Right" | Legend position: Top, Bottom, Left, Right | LegendPosition |
| | "Center" | Legend alignment: Near, Center, Far | Alignment |
| | "0" | Legend width (pixels or percentage) | - |
| | "0" | Legend height (pixels or percentage) | - |
| | false | Reverse legend item order | - |
| | "Vertical" | Layout: Vertical or Horizontal | - |
| | null | Max columns in horizontal layout | - |
| | 15 | Legend shape width | - |
| | 15 | Legend shape height | - |
| | null | Legend title configuration | - |
| | null | Custom HTML template for legend | - |
| | "Normal" | Text wrapping: Normal or Wrap | - |
| | null | Max legend item label width | - |
| | false | Enable paging for large legends | - |
| | true | Toggle point visibility on legend click | - |
AccumulationChartTooltipSettings Class
Configures tooltips for the chart.
Properties
| Property | Type | Default | Description |
|---|
| | false | Enable/disable tooltips |
| | null | Custom tooltip header |
| | null | Tooltip text format |
| | null | HTML template for tooltips |
| | null | Tooltip background color |
| | null | Tooltip border configuration |
| | null | Tooltip text styling |
| | null | Fixed tooltip position (x, y) |
| | 1 | Tooltip opacity |
| | false | Show shared tooltip |
Available Enumerations
| Enum | Values | Description |
|---|
| Fabric, FabricDark, Bootstrap4, Bootstrap, BootstrapDark, HighContrastLight, HighContrast, Tailwind, TailwindDark, Bootstrap5, Bootstrap5Dark, Fluent, FluentDark, Fluent2, Fluent2Dark, Fluent2HighContrast, Material3, Material3Dark, Material, MaterialDark | Chart theme options |
AccumulationHighlightMode
| None, Point | Highlight behavior |
AccumulationSelectionMode
| None, Point | Selection behavior |
| None, Chessboard, Dots, DiagonalForward, Crosshatch, Pacman, DiagonalBackward, Grid, Turquoise, Star, Triangle, Circle, Tile, HorizontalDash, VerticalDash, Rectangle, Box, VerticalStripe, HorizontalStripe, Bubble | Pattern options for highlighting/selection |
| Circle, Rectangle, Triangle, Diamond, Cross, HorizontalLine, VerticalLine, Pentagon, InvertedTriangle, SeriesType | Legend icon shapes |
Related Classes
Key Properties
AccumulationChart Properties
| Property | Type | Description | Example |
|---|
| boolean | Auto-arrange labels to prevent overlap | |
| object | Position of chart center (x, y percentages) | |
| object | Legend configuration (position, alignment) | {visible: true, position: 'Right'}
|
| object | Tooltip configuration and templates | {enable: true, format: '${point.x}: ${point.y}'}
|
| string | Chart title text | |
| string | Chart height | |
| string | Chart width | |
| string | Visual theme | |
| string | Background color | |
AccumulationSeries Properties
| Property | Type | Description | Example |
|---|
| string | Chart type: Pie, Pyramid, Funnel (Doughnut = Pie + innerRadius) | |
| object[] | Data collection | |
| string | Field for category labels | |
| string | Field for values | |
| string | Chart radius (percentage or pixel) | |
| string | Inner radius for doughnut (percentage) | |
| number | Start angle in degrees | |
| number | End angle in degrees | |
| boolean | Enable slice explosion on click | |
| number | Index of pre-exploded slice | |
| string | Explode distance | |
| string | Threshold for grouping | |
| string | Group by: Point, Value | |
DataLabel Properties
| Property | Type | Description | Example |
|---|
| boolean | Show/hide data labels | |
| string | Inside or Outside | |
| string | Field name for label text | |
| string | Custom HTML template | "<div>${point.x}: ${point.y}%</div>"
|
| string | Line or Curve | |
| object | Font customization | {size: '12px', color: '#000'}
|
Common Use Cases
1. Market Share Analysis
Display product/service market distribution with pie charts showing competitor percentages.
2. Budget Allocation
Visualize department spending or resource allocation with doughnut charts and center totals.
3. Survey Results
Present poll or survey responses with grouped categories for small values.
4. Sales Funnel Tracking
Monitor conversion stages from leads to customers using funnel charts.
5. Organizational Hierarchy
Display team size distribution or role distribution with pyramid charts.
6. Mobile Dashboards
Create responsive data visualizations optimized for touch interactions and small screens.
7. Report Generation
Export charts as images or PDFs for automated reporting systems.
8. Real-Time Monitoring
Update charts dynamically to show live statistics (server status, user activity).
Related Components
- Chart: For line, bar, column, area, and other Cartesian charts
- RangeNavigator: For timeline-based data exploration
- StockChart: For financial data visualization
- TreeMap: For hierarchical data with rectangles
Browser Support
- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Opera (latest)
Additional Resources
Next Steps:
- Read getting-started.md for detailed installation
- Explore chart-types.md for type-specific features
- Review data-visualization.md for styling
- Check accessibility.md for compliance requirements