
Syncfusion Blazor 3d Charts
- 194 installs
- 4 repo stars
- Updated July 28, 2026
- syncfusion/blazor-ui-components-skills
Use syncfusion-blazor-3d-charts for development tasks
About
syncfusion-blazor-3d-charts: A skill for development. This provides functionality for development workflows.
- syncfusion-blazor-3d-charts
Syncfusion Blazor 3d Charts by the numbers
- 194 all-time installs (skills.sh)
- +13 installs in the week ending Jul 27, 2026 (Skillselion tracking)
- Ranked #2,058 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
- Data as of Jul 29, 2026 (Skillselion catalog sync)
npx skills add https://github.com/syncfusion/blazor-ui-components-skills --skill syncfusion-blazor-3d-chartsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 194 |
|---|---|
| repo stars | ★ 4 |
| Last updated | July 28, 2026 |
| Repository | syncfusion/blazor-ui-components-skills ↗ |
What it does
Use syncfusion-blazor-3d-charts for development tasks
Files
Implementing Syncfusion Blazor 3D Charts
NuGet: Syncfusion.Blazor.Chart3D + Syncfusion.Blazor.Themes Namespace: Syncfusion.Blazor.Chart3D
A comprehensive skill for implementing and customizing Syncfusion's Blazor 3D Chart component. The 3D Chart provides stunning three-dimensional visualization for column, bar, and stacked chart types with rich customization options including rotation, tilt, depth, and various axis types.
When to Use This Skill
Use this skill when you need to:
- Create three-dimensional charts in Blazor applications
- Visualize data with 3D column, bar, or stacked chart types
- Implement rotatable and tiltable 3D visualizations
- Configure category, numeric, datetime, or logarithmic axes for 3D charts
- Bind data from various sources (IEnumerable, remote data, dynamic objects)
- Customize 3D chart appearance (colors, depth, wall color, rotation)
- Add data labels, legends, and tooltips to 3D charts
- Configure axis labels, tick lines, and grid lines
- Enable selection, highlighting, and interaction in 3D charts
- Create multi-pane 3D chart layouts
- Export or print 3D charts
- Ensure WCAG accessibility compliance for 3D visualizations
- Troubleshoot 3D chart rendering or configuration issues
Component Overview
Package: Syncfusion.Blazor.Chart3D Component: SfChart3D Supported Chart Types: Column, Bar, StackedColumn, StackedBar Supported Axis Types: Category, Numeric, DateTime, Logarithmic Platforms: Blazor Server, Blazor WebAssembly, Blazor Web App (.NET 8+)
The 3D Chart component renders data in three-dimensional space with configurable rotation, tilt, and depth for enhanced visual impact. It supports all standard chart features including multiple series, rich tooltips, legends, data labels, and extensive customization options.
Documentation and Navigation Guide
API Reference
📄 Read: references/api-reference.md
- Complete API reference for Syncfusion.Blazor.Chart3D namespace
- SfChart3D component properties, methods, and events
- All chart series, axis, legend, and tooltip classes
- Data label, border, margin, and styling components
- Event argument classes for all chart events
- Enumerations (Chart3DSeriesType, ValueType, SelectionMode, etc.)
- Interface definitions and base classes
- Usage examples for common API scenarios
- Links to detailed online API documentation
Events Reference
📄 Read: references/events.md
- Complete event reference for all 3D chart events
- Lifecycle events (OnCreated, OnResized)
- Rendering events (OnSeriesRender, OnPointRender, OnAxisLabelRender, etc.)
- User interaction events (OnPointClick, OnLegendClick, OnSelectionChanged)
- Mouse events (OnChartMouseMove, OnChartMouseClick, etc.)
- Export and data events (OnExported, OnAxisRangeRendered)
- Event argument properties and usage examples
- Complete working examples with multiple events
- Event handling best practices
Getting Started
📄 Read: references/getting-started.md
- Complete installation and setup for Blazor Server, WebAssembly, and Web App
- NuGet package installation (Syncfusion.Blazor.Chart3D)
- Service registration and namespace imports
- Script and theme configuration
- Creating your first 3D chart with complete code example
- Data source setup and basic binding
- Render mode configuration for .NET 8+
- Troubleshooting common setup issues
Chart Types
📄 Read: references/chart-types.md
- Column charts - vertical 3D bars
- Bar charts - horizontal 3D bars
- Stacked Column charts - vertically stacked series
- Stacked Bar charts - horizontally stacked series
- Chart type configuration (Chart3DSeriesType enum)
- Column/bar spacing and width customization
- Grouped columns with GroupName property
- Multiple series in single chart
- Complete code examples for each type
Data Binding
📄 Read: references/data-binding.md
- List binding with IEnumerable objects
- ExpandoObject binding for dynamic data structures
- DynamicObject binding for runtime data
- Remote data binding with SfDataManager
- DataSource, XName, YName property mapping
- Complex data structures and nested properties
- Dynamic data updates and refresh
- Performance optimization tips
Axis Configuration
📄 Read: references/axes-configuration.md
- Category Axis - for discrete categories
- Numeric Axis - for continuous numeric data
- DateTime Axis - for time-series data
- Logarithmic Axis - for exponential scale data
- ValueType property configuration
- Axis range (Minimum, Maximum, Interval)
- Axis titles and title rotation
- Tick lines and grid lines customization
- Multiple axes support
- Complete examples for each axis type
Axis Labels
📄 Read: references/axis-labels.md
- Label formatting (LabelFormat property)
- Custom label templates
- Label rotation (LabelRotationAngle)
- Label placement (BetweenTicks, OnTicks)
- Label style customization (font, color, size)
- Smart label collision handling
- Custom label text with events
- Edge label placement
- Multilevel labels
Data Labels
📄 Read: references/data-labels.md
- Enabling data labels on series
- Label position configuration
- Label template customization
- Label styling (font, color, background)
- Smart label positioning
- Format customization
- Conditional label visibility
- Complete implementation examples
Legend
📄 Read: references/legend.md
- Enabling and positioning legends
- Legend alignment options
- Series name customization
- Legend styling and appearance
- Interactive legend toggle
- Custom legend items and icons
- Legend templates
- Complete configuration examples
Tooltip
📄 Read: references/tooltip.md
- Enabling tooltips on hover
- Tooltip format customization
- Custom tooltip templates
- Tooltip styling (border, fill, opacity)
- Multi-point tooltip content
- Shared tooltips across series
- Complete implementation examples
Appearance and Styling
📄 Read: references/appearance.md
- Chart background and wall color
- Series colors and color palettes
- Theme integration (Material, Bootstrap, Fluent, Tailwind)
- Custom CSS styling with CssClass
- Opacity and transparency effects
- Border styles and customization
- Animation configuration
- Visual effects and enhancements
Chart Dimensions and 3D Effects
📄 Read: references/chart-dimensions.md
- Chart size configuration (Width, Height)
- Responsive sizing techniques
- 3D rotation (EnableRotation, RotationAngle)
- Tilt angle configuration (TiltAngle)
- Depth configuration (Depth property)
- Wall size customization
- Perspective and viewing angle
- Complete dimension examples
Selection and Highlighting
📄 Read: references/selection.md
- Selection modes (Point, Series, Cluster)
- Enabling selection functionality
- Selection patterns and visual styles
- Multi-selection support
- Selection events and handling
- Programmatic selection
- Highlight modes and effects
- Complete selection examples
Multiple Panes
📄 Read: references/multiple-panes.md
- Creating multi-pane chart layouts
- Row and column pane configuration
- Assigning axes to specific panes
- Distributing series across panes
- Pane border and background customization
- Synchronized pane behavior
- Use cases for multiple panes
- Complete multi-pane examples
Print and Export
📄 Read: references/print-export.md
- Print functionality
- Export to image formats (PNG, JPEG, SVG)
- Export to PDF documents
- Export configuration options
- Custom export settings
- Print preview customization
- Complete export examples
Accessibility
📄 Read: references/accessibility.md
- WCAG 2.1 compliance overview
- Keyboard navigation support
- ARIA attributes and roles
- Screen reader compatibility
- Focus management
- High contrast mode support
- Color contrast requirements
- Accessible design patterns
- Testing accessibility
Quick Start Example
@page "/3d-chart-demo"
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Sales Analysis"
WallColor="transparent"
EnableRotation="true"
RotationAngle="7"
TiltAngle="10"
Depth="100">
<Chart3DPrimaryXAxis Title="Month"
ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DPrimaryYAxis Title="Sales (in thousands)">
</Chart3DPrimaryYAxis>
<Chart3DLegendSettings Visible="true"></Chart3DLegendSettings>
<Chart3DTooltipSettings Enable="true"></Chart3DTooltipSettings>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@SalesData"
Name="Sales"
XName="Month"
YName="SalesValue"
Type="Chart3DSeriesType.Column">
<Chart3DDataLabel Visible="true"></Chart3DDataLabel>
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class SalesInfo
{
public string Month { get; set; }
public double SalesValue { get; set; }
}
public List<SalesInfo> SalesData = new List<SalesInfo>
{
new SalesInfo { Month = "Jan", SalesValue = 35 },
new SalesInfo { Month = "Feb", SalesValue = 28 },
new SalesInfo { Month = "Mar", SalesValue = 34 },
new SalesInfo { Month = "Apr", SalesValue = 32 },
new SalesInfo { Month = "May", SalesValue = 40 },
new SalesInfo { Month = "Jun", SalesValue = 32 },
new SalesInfo { Month = "Jul", SalesValue = 35 }
};
}Common Patterns
Multiple Series Chart
@using Syncfusion.Blazor.Chart3D
<SfChart3D WallColor="transparent" EnableRotation="true" RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@Data" Name="Series 1" XName="X" YName="Y1" Type="Chart3DSeriesType.Column">
</Chart3DSeries>
<Chart3DSeries DataSource="@Data" Name="Series 2" XName="X" YName="Y2" Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class ChartData
{
public string X { get; set; }
public double Y1 { get; set; }
public double Y2 { get; set; }
}
public List<ChartData> Data = new List<ChartData>
{
new ChartData { X = "Jan", Y1 = 35, Y2 = 28 },
new ChartData { X = "Feb", Y1 = 28, Y2 = 32 },
new ChartData { X = "Mar", Y1 = 34, Y2 = 30 },
new ChartData { X = "Apr", Y1 = 32, Y2 = 36 },
new ChartData { X = "May", Y1 = 40, Y2 = 38 },
new ChartData { X = "Jun", Y1 = 32, Y2 = 34 },
new ChartData { X = "Jul", Y1 = 35, Y2 = 37 }
};
}Stacked Column Chart
@using Syncfusion.Blazor.Chart3D
<SfChart3D WallColor="transparent" EnableRotation="true" RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@Data" XName="X" YName="Y1" Type="Chart3DSeriesType.StackingColumn">
</Chart3DSeries>
<Chart3DSeries DataSource="@Data" XName="X" YName="Y2" Type="Chart3DSeriesType.StackingColumn">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class StackingData
{
public string X { get; set; }
public double Y1 { get; set; }
public double Y2 { get; set; }
}
public List<StackingData> Data = new List<StackingData>
{
new StackingData { X = "Jan", Y1 = 20, Y2 = 15 },
new StackingData { X = "Feb", Y1 = 18, Y2 = 12 },
new StackingData { X = "Mar", Y1 = 25, Y2 = 14 },
new StackingData { X = "Apr", Y1 = 22, Y2 = 16 },
new StackingData { X = "May", Y1 = 28, Y2 = 18 },
new StackingData { X = "Jun", Y1 = 24, Y2 = 14 },
new StackingData { X = "Jul", Y1 = 26, Y2 = 17 }
};
}DateTime Axis Chart
@using Syncfusion.Blazor.Chart3D
<SfChart3D WallColor="transparent" EnableRotation="true" RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.DateTime"
LabelFormat="yyyy">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@TimeSeriesData"
XName="Date"
YName="Value"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class TimeSeriesPoint
{
public DateTime Date { get; set; }
public double Value { get; set; }
}
public List<TimeSeriesPoint> TimeSeriesData = new List<TimeSeriesPoint>
{
new TimeSeriesPoint { Date = new DateTime(2018, 1, 1), Value = 120 },
new TimeSeriesPoint { Date = new DateTime(2019, 1, 1), Value = 135 },
new TimeSeriesPoint { Date = new DateTime(2020, 1, 1), Value = 150 },
new TimeSeriesPoint { Date = new DateTime(2021, 1, 1), Value = 170 },
new TimeSeriesPoint { Date = new DateTime(2022, 1, 1), Value = 160 },
new TimeSeriesPoint { Date = new DateTime(2023, 1, 1), Value = 185 },
new TimeSeriesPoint { Date = new DateTime(2024, 1, 1), Value = 200 }
};
}Key Properties and APIs
SfChart3D Component
Main Properties:
- Title: Chart title text
- SubTitle: Chart subtitle text
- Width/Height: Chart dimensions (string with units or percentage)
- WallColor: Background color of 3D walls
- EnableRotation: Enable mouse rotation (bool)
- RotationAngle: Initial rotation angle (0-360 degrees)
- TiltAngle: Tilt angle for 3D perspective (0-360 degrees)
- Depth: Depth of 3D rendering (numeric value)
- Theme: Chart theme (Material, Bootstrap, Fluent, Tailwind, etc.)
- Background: Background color for the chart
- BackgroundImage: Background image URL
Methods:
ExportAsync(ExportType, string)- Export chart to PNG, JPEG, SVG, or PDFPrintAsync()- Print the chartRefresh()- Refresh the chart rendering
Key Events:
OnCreated- Chart3DCreatedEventArgsOnPointClick- Chart3DPointClickEventArgsOnSeriesRender- Chart3DSeriesRenderEventArgsOnPointRender- Chart3DPointRenderEventArgsOnLegendClick- Chart3DLegendClickEventArgsOnTooltipRender- Chart3DTooltipRenderEventArgsOnSelectionChanged- Chart3DSelectionChangedEventArgsOnAxisLabelRender- Chart3DAxisLabelRenderEventArgs
Chart3DSeries Properties
- DataSource: Data collection to bind
- XName: Property name for X-axis values
- YName: Property name for Y-axis values
- Name: Series display name for legend
- Type: Chart3DSeriesType enum (Column, Bar, StackingColumn, StackingBar)
- Fill: Series color
- Opacity: Series opacity (0-1)
- ColumnSpacing: Space between columns (0-1)
- ColumnWidth: Width of columns (0-1)
- GroupName: Group name for grouped columns
- Visible: Series visibility toggle
Child Components:
Chart3DDataLabel- Data label configurationChart3DEmptyPointSettings- Empty point handlingChart3DSeriesBorder- Border customizationChart3DAnimation- Animation settings
Axis Components (Chart3DPrimaryXAxis, Chart3DPrimaryYAxis, Chart3DAxis)
Core Properties:
- ValueType: ValueType enum (Category, Numeric, DateTime, Double, DateTimeCategory, Logarithmic)
- Title: Axis title text
- Minimum/Maximum: Axis range bounds
- Interval: Spacing between axis values
- LabelFormat: Format string for labels (e.g., "yyyy", "C", "N2")
- LabelRotationAngle: Rotation angle for labels
- EdgeLabelPlacement: EdgeLabelPlacement enum (None, Shift, Hide)
- LabelPlacement: LabelPlacement enum (OnTicks, BetweenTicks)
- RangePadding: ChartRangePadding enum (Auto, None, Normal, Additional, Round)
- IsInversed: Invert axis direction
- OpposedPosition: Position axis on opposite side
Child Components:
Chart3DAxisLabelStyle- Label font customizationChart3DAxisTitleStyle- Title font customizationChart3DMajorGridLines/Chart3DMinorGridLines- Grid line settingsChart3DMajorTickLines/Chart3DMinorTickLines- Tick line settings
Legend Settings (Chart3DLegendSettings)
- Visible: Show/hide legend
- Position: LegendPosition enum (Top, Bottom, Left, Right, Custom)
- Alignment: Alignment enum (Near, Center, Far)
- Height/Width: Legend dimensions
- ShapeHeight/ShapeWidth: Icon dimensions
- ToggleVisibility: Enable series toggle on click
- Mode: Chart3DLegendMode enum (Series, Point)
Child Components:
Chart3DLegendTextStyle- Text font styleChart3DLegendBorder- Border customizationChart3DLegendMargin- Margin settings
Tooltip Settings (Chart3DTooltipSettings)
- Enable: Enable tooltip
- Fill: Background color
- Format: Format string for tooltip content
- Shared: Share tooltip across series
- EnableMarker: Show marker in tooltip
- FadeOutDuration: Fade out duration in ms
- FadeOutMode: Chart3DFadeOutMode enum (Click, Move)
- Template: RenderFragment for custom tooltip
Child Components:
Chart3DTooltipTextStyle- Text font styleChart3DTooltipBorder- Border customization
Selection Settings
- SelectionMode: SelectionMode enum (None, Point, Series, Cluster)
- SelectionPattern: SelectionPattern enum (None, Dots, DiagonalForward, Grid, Chessboard, etc.)
- HighlightMode: HighlightMode enum (None, Point, Series, Cluster)
Use Chart3DSelectedDataIndexes collection with Chart3DSelectedDataIndex to programmatically select points.
Common Use Cases
Business Dashboard Metrics
Display KPIs, sales data, or performance metrics with enhanced 3D visualization for executive dashboards.
Financial Data Visualization
Render stock prices, market trends, or financial comparisons with datetime axes and multiple series.
Scientific Data Presentation
Visualize experimental data, measurements, or research findings with logarithmic or numeric axes.
Product Comparison
Compare product features, ratings, or sales across categories with grouped or stacked columns.
Time-Series Analysis
Display trends over time with datetime axes and smooth animations for data changes.
Regional Sales Reporting
Show sales by region, country, or territory with category axes and colorful series.
Troubleshooting Tips
Chart not rendering:
- Verify
AddSyncfusionBlazor()service registration in Program.cs - Check namespace imports in _Imports.razor
- Ensure script reference is at end of body tag
- Confirm render mode for .NET 8+ projects
Data not displaying:
- Check XName and YName match property names exactly (case-sensitive)
- Verify DataSource is not null and contains data
- Ensure ValueType matches data type (Category for strings, Numeric for numbers)
3D rotation not working:
- Set EnableRotation="true"
- Ensure RotationAngle is between 0-360
- Check if mouse events are blocked by overlays
Performance issues:
- Limit data points (3D rendering is resource-intensive)
- Disable animations if not needed
- Use appropriate chart type for data volume
Related Syncfusion Components
- Chart - 2D chart component with 30+ chart types
- Stock Chart - Financial charting with technical indicators
- Circular Gauge - Radial gauge visualization
- Pivot Table - Multi-dimensional data analysis
- TreeMap - Hierarchical data visualization
Accessibility for Blazor 3D Charts
This reference provides comprehensive guidance on implementing accessibility features in Syncfusion Blazor 3D Charts to meet WCAG 2.2, ADA, and Section 508 standards.
Table of Contents
Overview
Accessibility ensures that charts are usable by people with disabilities. Syncfusion 3D Charts support screen readers, keyboard navigation, and WAI-ARIA attributes for full accessibility compliance.
Accessibility Standards
Syncfusion 3D Charts comply with the following accessibility standards:
WCAG 2.2 Compliance
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Sales Performance" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DTooltipSettings Enable="true"></Chart3DTooltipSettings>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@SalesData" XName="Month" YName="Sales"
Type="Chart3DSeriesType.Column">
<Chart3DDataLabel Visible="true"></Chart3DDataLabel>
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class MonthlySales
{
public string Month { get; set; }
public double Sales { get; set; }
}
public List<MonthlySales> SalesData = new List<MonthlySales>
{
new MonthlySales { Month = "Jan", Sales = 35 },
new MonthlySales { Month = "Feb", Sales = 28 },
new MonthlySales { Month = "Mar", Sales = 34 },
new MonthlySales { Month = "Apr", Sales = 32 },
new MonthlySales { Month = "May", Sales = 40 },
new MonthlySales { Month = "Jun", Sales = 32 }
};
}Section 508 Compliance
Syncfusion 3D Charts meet Section 508 requirements:
| Criteria | Support | Description |
|---|---|---|
| Keyboard Navigation | Yes | Full keyboard support for navigation and interaction |
| Screen Reader | Yes | Compatible with JAWS, NVDA, Narrator |
| High Contrast | Yes | Supports Windows High Contrast mode |
| Focus Indicators | Yes | Clear visual focus indicators |
| Alternative Text | Yes | ARIA labels for all interactive elements |
ADA Compliance
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Accessible Chart Example" WallColor="transparent"
EnableRotation="true" RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
<Chart3DMajorGridLines Width="1"></Chart3DMajorGridLines>
</Chart3DPrimaryXAxis>
<Chart3DPrimaryYAxis>
<Chart3DMajorGridLines Width="1"></Chart3DMajorGridLines>
</Chart3DPrimaryYAxis>
<Chart3DLegendSettings Visible="true"></Chart3DLegendSettings>
<Chart3DTooltipSettings Enable="true"></Chart3DTooltipSettings>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@AccessibleData" Name="Revenue" XName="Quarter"
YName="Amount" Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class QuarterRevenue
{
public string Quarter { get; set; }
public double Amount { get; set; }
}
public List<QuarterRevenue> AccessibleData = new List<QuarterRevenue>
{
new QuarterRevenue { Quarter = "Q1", Amount = 125000 },
new QuarterRevenue { Quarter = "Q2", Amount = 145000 },
new QuarterRevenue { Quarter = "Q3", Amount = 165000 },
new QuarterRevenue { Quarter = "Q4", Amount = 185000 }
};
}WAI-ARIA Attributes
Syncfusion 3D Charts automatically apply appropriate ARIA attributes:
ARIA Roles
<!-- Chart container -->
<div role="region" aria-label="Sales Performance Chart">
<!-- Chart elements with ARIA attributes -->
</div>ARIA Labels
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Product Analysis" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@ProductData" Name="Sales" XName="Product"
YName="Units" Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class ProductInfo
{
public string Product { get; set; }
public double Units { get; set; }
}
public List<ProductInfo> ProductData = new List<ProductInfo>
{
new ProductInfo { Product = "Laptop", Units = 450 },
new ProductInfo { Product = "Phone", Units = 620 },
new ProductInfo { Product = "Tablet", Units = 380 },
new ProductInfo { Product = "Monitor", Units = 290 }
};
}The chart automatically includes:
aria-labelfor chart titlerole="img"for chart visualizationaria-labelfor series and data pointsaria-hidden="true"for decorative elements
ARIA Live Regions
Dynamic updates are announced using ARIA live regions:
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Live Data Updates" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DTooltipSettings Enable="true"></Chart3DTooltipSettings>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@LiveData" XName="Time" YName="Value"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class LiveDataPoint
{
public string Time { get; set; }
public double Value { get; set; }
}
public List<LiveDataPoint> LiveData = new List<LiveDataPoint>
{
new LiveDataPoint { Time = "10:00", Value = 85 },
new LiveDataPoint { Time = "10:15", Value = 92 },
new LiveDataPoint { Time = "10:30", Value = 88 }
};
}Keyboard Navigation
Full keyboard support for navigation and interaction:
Keyboard Shortcuts
| Key | Action |
|---|---|
| Alt + J | Focus on chart |
| Tab | Navigate to next element |
| Shift + Tab | Navigate to previous element |
| Arrow Keys | Navigate between data points |
| Enter / Space | Select data point |
| Ctrl + P | Print chart |
| Esc | Clear selection |
| Home | First data point |
| End | Last data point |
| Page Up | Previous series |
| Page Down | Next series |
Keyboard Navigation Example
@using Syncfusion.Blazor.Chart3D
<div style="margin-bottom: 10px;">
<p><strong>Keyboard Navigation:</strong></p>
<ul>
<li>Press <kbd>Alt + J</kbd> to focus on chart</li>
<li>Use <kbd>Arrow Keys</kbd> to navigate between data points</li>
<li>Press <kbd>Enter</kbd> to select a data point</li>
<li>Press <kbd>Ctrl + P</kbd> to print</li>
</ul>
</div>
<SfChart3D Title="Keyboard Accessible Chart" WallColor="transparent"
EnableRotation="true" RotationAngle="7" TiltAngle="10" Depth="100"
SelectionMode="Syncfusion.Blazor.Chart3D.SelectionMode.Point">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DTooltipSettings Enable="true"></Chart3DTooltipSettings>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@KeyboardData" XName="Category" YName="Value"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class KeyboardDataPoint
{
public string Category { get; set; }
public double Value { get; set; }
}
public List<KeyboardDataPoint> KeyboardData = new List<KeyboardDataPoint>
{
new KeyboardDataPoint { Category = "Item 1", Value = 45 },
new KeyboardDataPoint { Category = "Item 2", Value = 62 },
new KeyboardDataPoint { Category = "Item 3", Value = 58 },
new KeyboardDataPoint { Category = "Item 4", Value = 70 }
};
}Legend Keyboard Navigation
Navigate legend items using keyboard:
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Multi-Series Navigation" WallColor="transparent"
EnableRotation="true" RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DLegendSettings Visible="true" ToggleVisibility="true">
</Chart3DLegendSettings>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@SeriesData" Name="Product A" XName="Month"
YName="ValueA" Type="Chart3DSeriesType.Column">
</Chart3DSeries>
<Chart3DSeries DataSource="@SeriesData" Name="Product B" XName="Month"
YName="ValueB" Type="Chart3DSeriesType.Column">
</Chart3DSeries>
<Chart3DSeries DataSource="@SeriesData" Name="Product C" XName="Month"
YName="ValueC" Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class MultiSeriesData
{
public string Month { get; set; }
public double ValueA { get; set; }
public double ValueB { get; set; }
public double ValueC { get; set; }
}
public List<MultiSeriesData> SeriesData = new List<MultiSeriesData>
{
new MultiSeriesData { Month = "Jan", ValueA = 35, ValueB = 28, ValueC = 34 },
new MultiSeriesData { Month = "Feb", ValueA = 32, ValueB = 27, ValueC = 35 },
new MultiSeriesData { Month = "Mar", ValueA = 34, ValueB = 30, ValueC = 38 }
};
}Best Practices
1. Chart Title:
- Always provide descriptive titles
- Use clear, concise language
- Avoid jargon and abbreviations
- Example: "Monthly Sales Performance" not "Chart 1"
2. Series Names:
- Use meaningful series names for legends
- Provide context: "2023 Revenue" not "Series 1"
- Keep names concise but descriptive
- Avoid duplicate names
3. Color Contrast:
- Ensure WCAG 2.2 AA contrast ratio (4.5:1 for text)
- Use high contrast colors for series
- Test with colorblind simulators
- Don't rely solely on color to convey information
4. Data Labels:
- Enable data labels for critical information
- Use clear, readable fonts (minimum 12px)
- Ensure labels don't overlap
- Format numbers appropriately
5. Tooltips:
- Enable tooltips for detailed information
- Format tooltip content clearly
- Include series name, category, and value
- Use consistent formatting
6. Keyboard Support:
- Test all functionality with keyboard only
- Ensure focus indicators are visible
- Provide keyboard shortcuts documentation
- Test with screen readers (JAWS, NVDA, Narrator)
7. Alternative Content:
- Provide data table alternative
- Include text summary of key insights
- Offer CSV/Excel export options
- Document trends and patterns
8. Screen Reader Support:
- Test with multiple screen readers
- Verify ARIA labels are announced correctly
- Ensure navigation is logical
- Test dynamic updates
9. Responsive Design:
- Ensure chart is usable at different zoom levels
- Test with browser zoom (200%, 400%)
- Maintain readability on mobile devices
- Support touch navigation
10. Testing Checklist:
- ✅ Test with keyboard only (no mouse)
- ✅ Test with screen reader (JAWS, NVDA, Narrator)
- ✅ Verify color contrast meets WCAG standards
- ✅ Test with Windows High Contrast mode
- ✅ Verify focus indicators are visible
- ✅ Test at 200% browser zoom
- ✅ Check ARIA attributes using browser tools
- ✅ Test on mobile devices
- ✅ Verify alternative content is available
- ✅ Test dynamic updates are announced
Complete Accessible Chart Example
@using Syncfusion.Blazor.Chart3D
<div role="region" aria-label="Sales Analysis Region">
<h2 id="chartTitle">Quarterly Sales Analysis</h2>
<div style="margin-bottom: 15px;">
<p><strong>Chart Summary:</strong> This chart displays quarterly sales performance
for three products across four quarters. Product B shows the highest growth,
while Product A maintains steady performance.</p>
</div>
<div style="margin-bottom: 10px;">
<p><strong>Keyboard Instructions:</strong></p>
<ul>
<li>Press <kbd>Alt + J</kbd> to focus the chart</li>
<li>Use <kbd>Arrow Keys</kbd> to navigate data points</li>
<li>Press <kbd>Enter</kbd> to select</li>
<li>Use <kbd>Page Up/Down</kbd> to switch between series</li>
</ul>
</div>
<SfChart3D Title="Quarterly Sales by Product" Width="900px" Height="500px"
WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100"
SelectionMode="Syncfusion.Blazor.Chart3D.SelectionMode.Point">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
<Chart3DMajorGridLines Width="1"></Chart3DMajorGridLines>
</Chart3DPrimaryXAxis>
<Chart3DPrimaryYAxis>
<Chart3DMajorGridLines Width="1"></Chart3DMajorGridLines>
</Chart3DPrimaryYAxis>
<Chart3DLegendSettings Visible="true" ToggleVisibility="true">
</Chart3DLegendSettings>
<Chart3DTooltipSettings Enable="true"
Format="<b>${series.name}</b><br>${point.x}: ${point.y}">
</Chart3DTooltipSettings>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@AccessibleSalesData" Name="Product A"
XName="Quarter" YName="ProductA"
Type="Chart3DSeriesType.Column">
<Chart3DDataLabel Visible="true" Position="Syncfusion.Blazor.Chart3D.Chart3DDataLabelPosition.Top"></Chart3DDataLabel>
</Chart3DSeries>
<Chart3DSeries DataSource="@AccessibleSalesData" Name="Product B"
XName="Quarter" YName="ProductB"
Type="Chart3DSeriesType.Column">
<Chart3DDataLabel Visible="true" Position="Syncfusion.Blazor.Chart3D.Chart3DDataLabelPosition.Top"></Chart3DDataLabel>
</Chart3DSeries>
<Chart3DSeries DataSource="@AccessibleSalesData" Name="Product C"
XName="Quarter" YName="ProductC"
Type="Chart3DSeriesType.Column">
<Chart3DDataLabel Visible="true" Position="Syncfusion.Blazor.Chart3D.Chart3DDataLabelPosition.Top"></Chart3DDataLabel>
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
<div style="margin-top: 15px;">
<details>
<summary><strong>View Data Table</strong></summary>
<table style="border-collapse: collapse; width: 100%; margin-top: 10px;">
<thead>
<tr style="background-color: #f0f0f0;">
<th style="border: 1px solid #ddd; padding: 8px;">Quarter</th>
<th style="border: 1px solid #ddd; padding: 8px;">Product A</th>
<th style="border: 1px solid #ddd; padding: 8px;">Product B</th>
<th style="border: 1px solid #ddd; padding: 8px;">Product C</th>
</tr>
</thead>
<tbody>
@foreach (var item in AccessibleSalesData)
{
<tr>
<td style="border: 1px solid #ddd; padding: 8px;">@item.Quarter</td>
<td style="border: 1px solid #ddd; padding: 8px;">@item.ProductA</td>
<td style="border: 1px solid #ddd; padding: 8px;">@item.ProductB</td>
<td style="border: 1px solid #ddd; padding: 8px;">@item.ProductC</td>
</tr>
}
</tbody>
</table>
</details>
</div>
</div>
@code {
public class QuarterlyPerformance
{
public string Quarter { get; set; }
public double ProductA { get; set; }
public double ProductB { get; set; }
public double ProductC { get; set; }
}
public List<QuarterlyPerformance> AccessibleSalesData = new List<QuarterlyPerformance>
{
new QuarterlyPerformance { Quarter = "Q1", ProductA = 85, ProductB = 92, ProductC = 78 },
new QuarterlyPerformance { Quarter = "Q2", ProductA = 90, ProductB = 98, ProductC = 82 },
new QuarterlyPerformance { Quarter = "Q3", ProductA = 88, ProductB = 105, ProductC = 85 },
new QuarterlyPerformance { Quarter = "Q4", ProductA = 95, ProductB = 110, ProductC = 88 }
};
}This comprehensive example includes:
- Descriptive title and summary
- Keyboard navigation instructions
- High contrast colors
- Data labels for all points
- Tooltips with detailed information
- Legend with toggle functionality
- Alternative data table
- Proper ARIA structure
- Screen reader friendly markup
Syncfusion Blazor 3D Chart API Reference
Table of Contents
- Main Component
- SfChart3D
- Series Components
- Chart3DSeries
- Chart3DSeriesCollection
- Chart3DSeriesBorder
- Axis Components
- Chart3DPrimaryXAxis
- Chart3DPrimaryYAxis
- Chart3DAxis
- Chart3DAxes
- Data Label Components
- Chart3DDataLabel
- Legend Components
- Tooltip Components
- Title and Subtitle Components
- Layout Components
- Selection Components
- Animation Components
- Empty Point Components
- Border and Margin Components
- Event Argument Classes
- Data Classes
- Base Classes
- Enumerations
- Interface
- Usage Examples
- API Reference Links
- See Also
This document provides a comprehensive reference for all classes, interfaces, and enums available in the Syncfusion.Blazor.Chart3D namespace.
Main Component
SfChart3D
The primary component for rendering 3D charts in Blazor applications.
Namespace: Syncfusion.Blazor.Chart3D
Key Properties:
Title- Chart title textSubTitle- Chart subtitle textWidth- Chart width (string with units)Height- Chart height (string with units)WallColor- Background color of 3D wallsEnableRotation- Enable/disable mouse rotationRotationAngle- Initial rotation angle (0-360)TiltAngle- Tilt angle for 3D perspectiveDepth- Depth of 3D renderingTheme- Chart theme (Material, Bootstrap, Fluent, Tailwind, etc.)BackgroundImage- Background image for the chartBackground- Background color for the chart
Child Components:
Chart3DPrimaryXAxis- Primary X-axis configurationChart3DPrimaryYAxis- Primary Y-axis configurationChart3DSeriesCollection- Collection of chart seriesChart3DLegendSettings- Legend configurationChart3DTooltipSettings- Tooltip configurationChart3DRows- Row-based layout configurationChart3DColumns- Column-based layout configurationChart3DAxes- Additional axes collection
Methods:
ExportAsync()- Export chart to image or PDFPrintAsync()- Print the chartRefresh()- Refresh the chart rendering
Events:
OnCreated- Fired after chart is createdOnAxisLabelRender- Fired before axis labels renderOnSeriesRender- Fired before series rendersOnPointRender- Fired before point rendersOnTooltipRender- Fired before tooltip rendersOnLegendRender- Fired before legend rendersOnLegendClick- Fired when legend is clickedOnPointClick- Fired when point is clickedOnSelectionChanged- Fired when selection changesOnResized- Fired when chart is resizedOnExported- Fired after chart is exported
Series Components
Chart3DSeries
Represents a single data series in the 3D chart.
Key Properties:
DataSource- Data collection for the seriesXName- Property name for X-axis valuesYName- Property name for Y-axis valuesName- Series name for legendType- Chart type (Column, Bar, StackingColumn, StackingBar)Fill- Series colorOpacity- Series opacity (0-1)ColumnWidth- Width of columns (0-1)ColumnSpacing- Space between columns (0-1)GroupName- Group name for grouped columnsVisible- Series visibility
Child Components:
Chart3DDataLabel- Data label configurationChart3DEmptyPointSettings- Empty point handlingChart3DSeriesBorder- Series border settings
Chart3DSeriesCollection
Container for multiple Chart3DSeries components.
Chart3DSeriesBorder
Border customization for series.
Properties:
Color- Border colorWidth- Border width
Axis Components
Chart3DPrimaryXAxis
Primary X-axis configuration component.
Key Properties:
ValueType- Axis value type (Category, Numeric, DateTime, Logarithmic)Title- Axis title textMinimum- Minimum axis valueMaximum- Maximum axis valueInterval- Interval between axis valuesLabelFormat- Label format stringLabelRotationAngle- Label rotation angleEdgeLabelPlacement- Edge label placementLabelPlacement- Label placement (OnTicks, BetweenTicks)RangePadding- Range padding typeIsInversed- Invert axis directionOpposedPosition- Position axis on opposite sideVisible- Axis visibility
Child Components:
Chart3DAxisLabelStyle- Label font styleChart3DAxisTitleStyle- Title font styleChart3DMajorGridLines- Major grid linesChart3DMinorGridLines- Minor grid linesChart3DMajorTickLines- Major tick linesChart3DMinorTickLines- Minor tick lines
Chart3DPrimaryYAxis
Primary Y-axis configuration component (same properties as Chart3DPrimaryXAxis).
Chart3DAxis
Generic axis component for additional axes.
Chart3DAxes
Collection of additional axes.
Chart3DAxisLabelStyle
Font style customization for axis labels.
Properties:
Size- Font sizeFontFamily- Font familyFontStyle- Font style (Normal, Italic, Oblique)FontWeight- Font weightColor- Font color
Chart3DAxisTitleStyle
Font style customization for axis titles (same properties as Chart3DAxisLabelStyle).
Chart3DMajorGridLines
Major grid line customization.
Properties:
Width- Line widthColor- Line colorDashArray- Dash pattern
Chart3DMinorGridLines
Minor grid line customization (same properties as Chart3DMajorGridLines).
Chart3DMajorTickLines
Major tick line customization.
Properties:
Width- Line widthHeight- Line heightColor- Line color
Chart3DMinorTickLines
Minor tick line customization (same properties as Chart3DMajorTickLines).
Data Label Components
Chart3DDataLabel
Data label configuration for series.
Key Properties:
Visible- Label visibilityPosition- Label position (Top, Middle, Bottom, Outer)Fill- Label background colorOpacity- Label opacityAngle- Label rotation angleEnableRotation- Enable label rotationTemplate- Custom label template
Child Components:
Chart3DDataLabelFont- Label font styleChart3DDataLabelBorder- Label borderChart3DDataLabelMargin- Label margin
Chart3DDataLabelFont
Font style for data labels.
Properties:
Size- Font sizeFontFamily- Font familyFontStyle- Font styleFontWeight- Font weightColor- Font color
Chart3DDataLabelBorder
Border customization for data labels.
Properties:
Color- Border colorWidth- Border width
Chart3DDataLabelMargin
Margin customization for data labels.
Properties:
Left- Left marginRight- Right marginTop- Top marginBottom- Bottom margin
Legend Components
Chart3DLegendSettings
Legend configuration for the chart.
Key Properties:
Visible- Legend visibilityPosition- Legend position (Top, Bottom, Left, Right, Custom)Alignment- Legend alignment (Near, Center, Far)Height- Legend heightWidth- Legend widthLocation- Custom location (X, Y)Padding- Legend paddingShapeHeight- Legend icon heightShapeWidth- Legend icon widthShapePadding- Padding around legend iconToggleVisibility- Enable series toggle on clickMode- Legend mode (Series, Point)
Child Components:
Chart3DLegendTextStyle- Legend text font styleChart3DLegendBorder- Legend borderChart3DLegendMargin- Legend marginChart3DLegendContainerPadding- Container paddingChart3DLegendTitleStyle- Title font style
Chart3DLegendTextStyle
Font style for legend text.
Chart3DLegendBorder
Border customization for legend.
Chart3DLegendMargin
Margin customization for legend.
Chart3DLegendContainerPadding
Container padding for legend.
Chart3DLegendTitleStyle
Font style for legend title.
Tooltip Components
Chart3DTooltipSettings
Tooltip configuration for the chart.
Key Properties:
Enable- Enable tooltipFill- Tooltip background colorOpacity- Tooltip opacityFormat- Tooltip format stringShared- Shared tooltip across seriesEnableMarker- Enable marker in tooltipFadeOutDuration- Fade out durationFadeOutMode- Fade out mode (Click, Move)Template- Custom tooltip template
Child Components:
Chart3DTooltipTextStyle- Tooltip text font styleChart3DTooltipBorder- Tooltip borderChart3DTooltipLocation- Tooltip location
Chart3DTooltipTextStyle
Font style for tooltip text.
Chart3DTooltipBorder
Border customization for tooltip.
Chart3DTooltipLocation
Location specification for tooltip.
Properties:
X- X coordinateY- Y coordinate
Title and Subtitle Components
Chart3DTitleStyle
Font style for chart title.
Properties:
Size- Font sizeFontFamily- Font familyFontStyle- Font styleFontWeight- Font weightColor- Font colorTextAlignment- Text alignment (Near, Center, Far)TextOverflow- Text overflow handling (None, Wrap, Trim)
Child Component:
Chart3DTitleBorder- Title border
Chart3DTitleBorder
Border customization for chart title.
Chart3DSubTitleStyle
Font style for chart subtitle (same properties as Chart3DTitleStyle).
Child Component:
Chart3DSubTitleBorder- Subtitle border
Chart3DSubTitleBorder
Border customization for chart subtitle.
Layout Components
Chart3DRows
Container for row-based chart layout.
Chart3DRow
Single row configuration in chart layout.
Properties:
Height- Row heightBorder- Row border
Chart3DColumns
Container for column-based chart layout.
Chart3DColumn
Single column configuration in chart layout.
Properties:
Width- Column widthBorder- Column border
Selection Components
Chart3DSelectedDataIndex
Represents a selected data point.
Properties:
SeriesIndex- Series indexPointIndex- Point index
Chart3DSelectedDataIndexes
Collection of selected data indexes.
Animation Components
Chart3DAnimation
Animation configuration for series.
Properties:
Enable- Enable animationDuration- Animation duration in millisecondsDelay- Animation delay in milliseconds
Empty Point Components
Chart3DEmptyPointSettings
Configuration for handling empty points in series.
Properties:
Mode- Empty point mode (Zero, Average, Drop, Gap)Fill- Empty point fill colorBorder- Empty point border
Border and Margin Components
Chart3DBorder
Border customization for chart.
Properties:
Color- Border colorWidth- Border width
Chart3DMargin
Margin customization for chart.
Properties:
Left- Left marginRight- Right marginTop- Top marginBottom- Bottom margin
Chart3DLocation
Location specification.
Properties:
X- X coordinateY- Y coordinate
Event Argument Classes
Chart3DCreatedEventArgs
Event arguments for chart creation event.
Properties:
Chart- Chart instance
Chart3DAxisLabelRenderEventArgs
Event arguments for axis label render event.
Properties:
Text- Label textValue- Label valueLabelStyle- Label styleAxis- Axis instanceCancel- Cancel rendering flag
Chart3DSeriesRenderEventArgs
Event arguments for series render event.
Properties:
Series- Series instanceData- Series dataFill- Series fill colorCancel- Cancel rendering flag
Chart3DPointRenderEventArgs
Event arguments for point render event.
Properties:
Point- Point dataSeries- Series instanceFill- Point fill colorBorder- Point borderCancel- Cancel rendering flag
Chart3DTooltipRenderEventArgs
Event arguments for tooltip render event.
Properties:
Text- Tooltip textData- Point dataSeries- Series instanceCancel- Cancel rendering flagTextStyle- Text style
Chart3DLegendRenderEventArgs
Event arguments for legend render event.
Properties:
Text- Legend textFill- Legend fill colorShape- Legend shapeCancel- Cancel rendering flag
Chart3DLegendClickEventArgs
Event arguments for legend click event.
Properties:
Series- Series instancePoint- Point dataCancel- Cancel action flag
Chart3DPointClickEventArgs
Event arguments for point click event.
Properties:
Point- Point dataSeries- Series instancePointIndex- Point indexSeriesIndex- Series index
Chart3DSelectionChangedEventArgs
Event arguments for selection changed event.
Properties:
SelectedDataIndexes- Selected data indexesIsSelected- Selection stateSeries- Series instancePointIndex- Point indexSeriesIndex- Series index
Chart3DMouseEventArgs
Event arguments for mouse events.
Properties:
Target- Event targetX- Mouse X positionY- Mouse Y position
Chart3DResizedEventArgs
Event arguments for resize event.
Properties:
CurrentSize- Current chart sizePreviousSize- Previous chart size
Chart3DExportedEventArgs
Event arguments for export event.
Properties:
Type- Export typeData- Export data
Chart3DTextRenderEventArgs
Event arguments for text render event.
Properties:
Text- Text contentLocation- Text locationCancel- Cancel rendering flag
Chart3DAxisRangeRenderedEventArgs
Event arguments for axis range calculated event.
Properties:
Axis- Axis instanceMinimum- Calculated minimumMaximum- Calculated maximumInterval- Calculated interval
Data Classes
Chart3DDataPointInfo
Information about a chart data point.
Properties:
X- X valueY- Y valueText- Point textTooltip- Tooltip text
Chart3DTooltipInfo
Tooltip information for a point.
Properties:
PointX- Point X valuePointY- Point Y valueSeriesName- Series namePointIndex- Point indexSeriesIndex- Series index
PointXY
Represents point coordinates.
Properties:
X- X valueY- Y value
Base Classes
Chart3DSubComponent
Abstract base class for 3D chart subcomponents.
Chart3DDataBoundComponent
Base class for data-bound 3D chart components.
Chart3DEventArgs
Base class for chart event arguments.
Chart3DDefaultBorder
Default border settings.
Chart3DDefaultFont
Default font settings.
Chart3DDefaultLocation
Default location settings.
Chart3DDefaultMargin
Default margin settings.
Chart3DDefaultSelectedData
Default selected data settings.
Chart3DEventBorder
Border settings for events.
Chart3DEventFont
Font settings for events.
Chart3DEventLocation
Location settings for events.
Enumerations
Chart3DSeriesType
Chart series types.
Values:
Column- 3D column chartBar- 3D bar chartStackingColumn- Stacked 3D column chartStackingBar- Stacked 3D bar chart
ValueType
Axis value types.
Values:
Double- Numeric axisDateTime- DateTime axisCategory- Category axisDateTimeCategory- DateTime category axisLogarithmic- Logarithmic axis
Chart3DDataLabelPosition
Data label positions.
Values:
Top- Label at top of pointMiddle- Label at middle of pointBottom- Label at bottom of pointOuter- Label outside point
SelectionMode
Selection modes.
Values:
None- No selectionPoint- Select individual pointsSeries- Select entire seriesCluster- Select cluster of points
SelectionPattern
Selection patterns.
Values:
None- No patternDots- Dot patternDiagonalForward- Forward diagonal patternDiagonalBackward- Backward diagonal patternGrid- Grid patternChessboard- Chessboard patternHorizontalStripe- Horizontal stripe patternVerticalStripe- Vertical stripe patternBubble- Bubble pattern
HighlightMode
Highlight modes.
Values:
None- No highlightingPoint- Highlight pointSeries- Highlight seriesCluster- Highlight cluster
LegendPosition
Legend positions.
Values:
Top- Legend at topBottom- Legend at bottomLeft- Legend at leftRight- Legend at rightCustom- Custom position
LegendShape
Legend icon shapes.
Values:
Circle- Circle shapeRectangle- Rectangle shapeTriangle- Triangle shapeDiamond- Diamond shapeCross- Cross shapeHorizontalLine- Horizontal lineVerticalLine- Vertical linePentagon- Pentagon shapeInvertedTriangle- Inverted triangleSeriesType- Use series type shape
Alignment
Alignment options.
Values:
Near- Near alignmentCenter- Center alignmentFar- Far alignment
Chart3DTitlePosition
Title positions.
Values:
Top- Title at topBottom- Title at bottomLeft- Title at leftRight- Title at rightCustom- Custom position
Chart3DLegendTitlePosition
Legend title positions.
Values:
Top- Title at topBottom- Title at bottomLeft- Title at leftRight- Title at right
Chart3DLegendMode
Legend rendering modes.
Values:
Series- Legend per seriesPoint- Legend per pointRange- Legend for rangesGradient- Gradient legend
Chart3DFadeOutMode
Tooltip fade out modes.
Values:
Click- Fade out on clickMove- Fade out on move
EmptyPointMode
Empty point handling modes.
Values:
Gap- Leave gap for empty pointsZero- Treat empty points as zeroAverage- Use average of neighborsDrop- Drop empty points
EdgeLabelPlacement
Edge label placement options.
Values:
None- No special placementShift- Shift edge labels insideHide- Hide edge labels
LabelPlacement
Label placement options.
Values:
OnTicks- Labels on tick marksBetweenTicks- Labels between tick marks
LabelIntersectAction
Label intersection actions.
Values:
None- No actionHide- Hide intersecting labelsTrim- Trim intersecting labelsWrap- Wrap intersecting labelsRotate45- Rotate labels 45 degreesRotate90- Rotate labels 90 degrees
ChartRangePadding
Range padding options.
Values:
Auto- Automatic paddingNone- No paddingNormal- Normal paddingAdditional- Additional paddingRound- Round to nice numbers
IntervalType
DateTime interval types.
Values:
Auto- Automatic intervalYears- Year intervalsMonths- Month intervalsDays- Day intervalsHours- Hour intervalsMinutes- Minute intervalsSeconds- Second intervals
RangeIntervalType
Range interval types (same as IntervalType).
AnimationType
Animation types.
Values:
Linear- Linear animationEaseIn- Ease in animationEaseOut- Ease out animationEaseInOut- Ease in-out animation
ExportType
Export file types.
Values:
PNG- Export as PNG imageJPEG- Export as JPEG imageSVG- Export as SVGPDF- Export as PDF
TextOverflow
Text overflow handling.
Values:
None- No handlingWrap- Wrap textTrim- Trim text
Chart3DShapeType
3D shape types for columns and bars.
Values:
Cylinder- Cylindrical shapeRectangle- Rectangular shape
Interface
IChart3DLegendMethods
Interface for legend methods.
Methods:
GetMaxItemWidth()- Get maximum item widthGetMaxItemHeight()- Get maximum item heightGetTotalItemsCount()- Get total items count
Usage Examples
Basic 3D Column Chart
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Sales Analysis"
WallColor="transparent"
EnableRotation="true"
RotationAngle="7"
TiltAngle="10"
Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category" Title="Month">
</Chart3DPrimaryXAxis>
<Chart3DPrimaryYAxis Title="Sales">
</Chart3DPrimaryYAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@SalesData"
XName="Month"
YName="Sales"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class SalesInfo
{
public string Month { get; set; }
public double Sales { get; set; }
}
public List<SalesInfo> SalesData = new List<SalesInfo>
{
new SalesInfo { Month = "Jan", Sales = 12000 },
new SalesInfo { Month = "Feb", Sales = 13500 },
new SalesInfo { Month = "Mar", Sales = 14200 },
new SalesInfo { Month = "Apr", Sales = 15800 },
new SalesInfo { Month = "May", Sales = 16500 },
new SalesInfo { Month = "Jun", Sales = 17200 },
new SalesInfo { Month = "Jul", Sales = 18000 },
new SalesInfo { Month = "Aug", Sales = 19000 },
new SalesInfo { Month = "Sep", Sales = 17500 },
new SalesInfo { Month = "Oct", Sales = 18500 },
new SalesInfo { Month = "Nov", Sales = 19500 },
new SalesInfo { Month = "Dec", Sales = 21000 }
};
}Using Events
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Interactive Sales Chart"
WallColor="transparent"
EnableRotation="true"
RotationAngle="7"
TiltAngle="10"
Depth="100"
PointClick="@OnPointClick"
LegendClick="@OnLegendClick">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category"
Title="Month">
</Chart3DPrimaryXAxis>
<Chart3DPrimaryYAxis Title="Sales">
</Chart3DPrimaryYAxis>
<Chart3DLegendSettings Visible="true"></Chart3DLegendSettings>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@SalesData"
Name="Sales"
XName="Month"
YName="Sales"
Fill="#4C9AFF"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class SalesInfo
{
public string Month { get; set; }
public double Sales { get; set; }
}
public List<SalesInfo> SalesData = new List<SalesInfo>
{
new SalesInfo { Month = "Jan", Sales = 12000 },
new SalesInfo { Month = "Feb", Sales = 13500 },
new SalesInfo { Month = "Mar", Sales = 14200 },
new SalesInfo { Month = "Apr", Sales = 15800 },
new SalesInfo { Month = "May", Sales = 16500 },
new SalesInfo { Month = "Jun", Sales = 17200 },
new SalesInfo { Month = "Jul", Sales = 18000 }
};
private void OnPointClick(Chart3DPointClickEventArgs args)
{
Console.WriteLine($"Point clicked: Index = {args.PointIndex}, Series = {args.Series.Name}");
}
private void OnLegendClick(Chart3DLegendClickEventArgs args)
{
Console.WriteLine($"Legend clicked: {args.Series.Name}");
}
}Custom Data Labels
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Sales with Custom Data Labels"
WallColor="transparent"
EnableRotation="true"
RotationAngle="7"
TiltAngle="10"
Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@Data"
XName="X"
YName="Y"
Type="Chart3DSeriesType.Column">
<Chart3DDataLabel Visible="true"
Position="Syncfusion.Blazor.Chart3D.Chart3DDataLabelPosition.Top">
<Chart3DDataLabelFont FontSize="12px"
FontWeight="Bold"
Color="Blue">
</Chart3DDataLabelFont>
<Chart3DDataLabelBorder Color="Red"
Width="2">
</Chart3DDataLabelBorder>
</Chart3DDataLabel>
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class ChartPoint
{
public string X { get; set; }
public double Y { get; set; }
}
public List<ChartPoint> Data = new List<ChartPoint>
{
new ChartPoint { X = "Jan", Y = 45 },
new ChartPoint { X = "Feb", Y = 52 },
new ChartPoint { X = "Mar", Y = 60 },
new ChartPoint { X = "Apr", Y = 58 },
new ChartPoint { X = "May", Y = 65 },
new ChartPoint { X = "Jun", Y = 70 },
new ChartPoint { X = "Jul", Y = 75 }
};
}Multiple Axes
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Sales & Profit Analysis"
WallColor="transparent"
EnableRotation="true"
RotationAngle="7"
TiltAngle="10"
Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category"
Title="Month">
</Chart3DPrimaryXAxis>
<Chart3DPrimaryYAxis Title="Sales (in USD)">
</Chart3DPrimaryYAxis>
<Chart3DAxes>
<Chart3DAxis Name="SecondaryYAxis"
Title="Profit (in USD)"
OpposedPosition="true">
</Chart3DAxis>
</Chart3DAxes>
<Chart3DSeriesCollection>
<!-- Sales Series (Primary Y Axis) -->
<Chart3DSeries DataSource="@Data"
XName="X"
YName="Y1"
Name="Sales"
Type="Chart3DSeriesType.Column"
Fill="#4C9AFF">
</Chart3DSeries>
<!-- Profit Series (Secondary Y Axis) -->
<Chart3DSeries DataSource="@Data"
XName="X"
YName="Y2"
YAxisName="SecondaryYAxis"
Name="Profit"
Type="Chart3DSeriesType.Column"
Fill="#FF8C00">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class ChartData
{
public string X { get; set; }
public double Y1 { get; set; } // Sales
public double Y2 { get; set; } // Profit
}
public List<ChartData> Data = new List<ChartData>
{
new ChartData { X = "Jan", Y1 = 12000, Y2 = 3000 },
new ChartData { X = "Feb", Y1 = 13500, Y2 = 3500 },
new ChartData { X = "Mar", Y1 = 15000, Y2 = 4200 },
new ChartData { X = "Apr", Y1 = 15800, Y2 = 4500 },
new ChartData { X = "May", Y1 = 17000, Y2 = 4800 },
new ChartData { X = "Jun", Y1 = 16500, Y2 = 4600 },
new ChartData { X = "Jul", Y1 = 18000, Y2 = 5000 }
};
}API Reference Links
For detailed API documentation, visit:
Appearance Customization for Blazor 3D Charts
This reference provides comprehensive guidance on customizing the appearance of Syncfusion Blazor 3D Charts, including colors, backgrounds, animations, and styling options.
Table of Contents
- Overview
- Custom Color Palette
- Data Point Customization
- Chart Area Customization
- Animation
- Chart Rotation
- Title Customization
- Best Practices
Overview
Appearance customization allows you to match charts with your application's theme, improve readability, and enhance user experience through visual design.
Custom Color Palette
Define custom colors for series using the Palettes property. The Palettes property accepts an array of color strings to customize the series colors.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Olympic Medals" Palettes="@CustomColors" WallColor="transparent"
EnableRotation="true" RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@MedalData" Name="Gold" XName="Country"
YName="Gold" Type="Chart3DSeriesType.Column">
</Chart3DSeries>
<Chart3DSeries DataSource="@MedalData" Name="Silver" XName="Country"
YName="Silver" Type="Chart3DSeriesType.Column">
</Chart3DSeries>
<Chart3DSeries DataSource="@MedalData" Name="Bronze" XName="Country"
YName="Bronze" Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public string[] CustomColors = new string[] { "#FFD700", "#C0C0C0", "#CD7F32" };
public class MedalCount
{
public string Country { get; set; }
public double Gold { get; set; }
public double Silver { get; set; }
public double Bronze { get; set; }
}
public List<MedalCount> MedalData = new List<MedalCount>
{
new MedalCount { Country = "USA", Gold = 50, Silver = 70, Bronze = 45 },
new MedalCount { Country = "China", Gold = 40, Silver = 60, Bronze = 55 },
new MedalCount { Country = "Japan", Gold = 70, Silver = 60, Bronze = 50 }
};
}Data Point Customization
Point Color Mapping
Map colors from data source using the PointColor property. The PointColor property maps a data field containing color values to apply individual colors to each data point.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Temperature Variation" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@TempData" XName="Month" YName="Temp"
PointColor="Color" Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class TemperatureData
{
public string Month { get; set; }
public double Temp { get; set; }
public string Color { get; set; }
}
public List<TemperatureData> TempData = new List<TemperatureData>
{
new TemperatureData { Month = "Jan", Temp = 6.96, Color = "#4169E1" },
new TemperatureData { Month = "Feb", Temp = 8.9, Color = "#1E90FF" },
new TemperatureData { Month = "Mar", Temp = 12, Color = "#00BFFF" },
new TemperatureData { Month = "Apr", Temp = 17.5, Color = "#87CEEB" },
new TemperatureData { Month = "May", Temp = 22.1, Color = "#FFD700" }
};
}Point Level Customization with Events
Use the PointRendering event to customize individual data points dynamically. The PointRendering event provides Chart3DPointRenderEventArgs with properties like Fill and Point for color and data manipulation.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Performance Analysis" PointRendering="OnPointRender"
WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@PerformanceData" XName="Department" YName="Score"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public string[] GradientColors = new string[]
{
"#FF6B6B", "#4ECDC4", "#45B7D1", "#FFA07A", "#98D8C8",
"#F7DC6F", "#BB8FCE", "#85C1E2", "#F8B88B", "#52B788"
};
public class DepartmentPerformance
{
public string Department { get; set; }
public double Score { get; set; }
}
public List<DepartmentPerformance> PerformanceData = new List<DepartmentPerformance>
{
new DepartmentPerformance { Department = "Sales", Score = 85 },
new DepartmentPerformance { Department = "Marketing", Score = 72 },
new DepartmentPerformance { Department = "IT", Score = 95 },
new DepartmentPerformance { Department = "HR", Score = 68 }
};
public void OnPointRender(Chart3DPointRenderEventArgs args)
{
args.Fill = GradientColors[args.Point.Index % GradientColors.Length];
}
}Combined Point and Label Customization
Combine point and label customization using the PointRendering and DataLabelRendering events. The PointRendering event (with Chart3DPointRenderEventArgs) customizes point appearance, while the DataLabelRendering event (with Chart3DTextRenderEventArgs) customizes label text and styling.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Highlighted Data" PointRendering="CustomizePoint"
DataLabelRendering="CustomizeLabel"
WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@SalesData" XName="Product" YName="Sales"
Type="Chart3DSeriesType.Column">
<Chart3DDataLabel Visible="true"></Chart3DDataLabel>
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class ProductSales
{
public string Product { get; set; }
public double Sales { get; set; }
}
public List<ProductSales> SalesData = new List<ProductSales>
{
new ProductSales { Product = "Laptop", Sales = 120 },
new ProductSales { Product = "Phone", Sales = 180 },
new ProductSales { Product = "Tablet", Sales = 95 },
new ProductSales { Product = "Monitor", Sales = 140 }
};
public void CustomizePoint(Chart3DPointRenderEventArgs args)
{
// Highlight the maximum value
if (args.Point.Y is double y && y == 180)
{
args.Fill = "#28a745";
}
}
public void CustomizeLabel(Chart3DTextRenderEventArgs args)
{
// Add special marker for highest value
if (args.Point.Y is double y && y == 180)
{
args.Text = "★ " + args.Text;
}
}
}Chart Area Customization
Background Color and Border
Customize the chart background and border using the BackgroundColor, WallColor properties, and the Chart3DBorder component. The Chart3DBorder component has Color and Width properties to define border appearance.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Sales Dashboard" BackgroundColor="#F0F8FF"
WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DBorder Color="#4169E1" Width="2"></Chart3DBorder>
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@DashboardData" XName="Category" YName="Value"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class Dashboard
{
public string Category { get; set; }
public double Value { get; set; }
}
public List<Dashboard> DashboardData = new List<Dashboard>
{
new Dashboard { Category = "Q1", Value = 120 },
new Dashboard { Category = "Q2", Value = 145 },
new Dashboard { Category = "Q3", Value = 165 }
};
}Chart Margin
Set chart margins using the Chart3DMargin component with Left, Right, Top, and Bottom properties to define spacing around the chart area.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Spaced Chart" BackgroundColor="#FFFACD"
WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DBorder Color="#FF6347" Width="3"></Chart3DBorder>
<Chart3DMargin Left="80" Right="80" Top="80" Bottom="80"></Chart3DMargin>
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@MarginData" XName="Item" YName="Count"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class MarginDataPoint
{
public string Item { get; set; }
public double Count { get; set; }
}
public List<MarginDataPoint> MarginData = new List<MarginDataPoint>
{
new MarginDataPoint { Item = "A", Count = 50 },
new MarginDataPoint { Item = "B", Count = 70 },
new MarginDataPoint { Item = "C", Count = 60 }
};
}Animation
Customize series animation using the Chart3DAnimation component with properties like Enable (boolean to enable/disable animation), Duration (animation duration in milliseconds), and Delay (delay before animation starts in milliseconds):
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Animated Chart" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@AnimatedData" Name="Sales" XName="Month"
YName="Amount" Type="Chart3DSeriesType.Column">
<Chart3DAnimation Enable="true" Duration="2000" Delay="300"></Chart3DAnimation>
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class MonthlyData
{
public string Month { get; set; }
public double Amount { get; set; }
}
public List<MonthlyData> AnimatedData = new List<MonthlyData>
{
new MonthlyData { Month = "Jan", Amount = 120 },
new MonthlyData { Month = "Feb", Amount = 145 },
new MonthlyData { Month = "Mar", Amount = 165 },
new MonthlyData { Month = "Apr", Amount = 185 }
};
}Multiple Series with Staggered Animation
Apply staggered animations to multiple series by setting different Delay values in the Chart3DAnimation component for each series. Use the Duration property to control animation speed and Enable property to toggle animation on/off.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Staggered Animation" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@SeriesData" Name="Series 1" XName="X"
YName="Y1" Type="Chart3DSeriesType.Column">
<Chart3DAnimation Enable="true" Duration="1500" Delay="0"></Chart3DAnimation>
</Chart3DSeries>
<Chart3DSeries DataSource="@SeriesData" Name="Series 2" XName="X"
YName="Y2" Type="Chart3DSeriesType.Column">
<Chart3DAnimation Enable="true" Duration="1500" Delay="500"></Chart3DAnimation>
</Chart3DSeries>
<Chart3DSeries DataSource="@SeriesData" Name="Series 3" XName="X"
YName="Y3" Type="Chart3DSeriesType.Column">
<Chart3DAnimation Enable="true" Duration="1500" Delay="1000"></Chart3DAnimation>
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class MultiSeriesData
{
public string X { get; set; }
public double Y1 { get; set; }
public double Y2 { get; set; }
public double Y3 { get; set; }
}
public List<MultiSeriesData> SeriesData = new List<MultiSeriesData>
{
new MultiSeriesData { X = "A", Y1 = 50, Y2 = 60, Y3 = 70 },
new MultiSeriesData { X = "B", Y1 = 40, Y2 = 55, Y3 = 65 }
};
}Chart Rotation
Enable interactive 3D rotation using the EnableRotation property (boolean). Control the rotation perspective using RotationAngle (horizontal rotation in degrees) and TiltAngle (vertical tilt in degrees). The Depth property sets the depth perspective of the 3D view:
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Rotatable 3D Chart" WallColor="transparent"
EnableRotation="true" RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@RotationData" XName="Category" YName="Value"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class RotationDataPoint
{
public string Category { get; set; }
public double Value { get; set; }
}
public List<RotationDataPoint> RotationData = new List<RotationDataPoint>
{
new RotationDataPoint { Category = "Item 1", Value = 85 },
new RotationDataPoint { Category = "Item 2", Value = 92 },
new RotationDataPoint { Category = "Item 3", Value = 78 }
};
}Title Customization
Title Style
Customize title appearance using the Chart3DTitleStyle component with properties like FontSize, Color, FontFamily, FontWeight, and FontStyle to control typography and styling.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Styled Title Chart" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DTitleStyle FontSize="24px" Color="#FF6347" FontFamily="Arial"
FontWeight="bold" FontStyle="italic">
</Chart3DTitleStyle>
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@TitleData" XName="Label" YName="Value"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class TitleDataPoint
{
public string Label { get; set; }
public double Value { get; set; }
}
public List<TitleDataPoint> TitleData = new List<TitleDataPoint>
{
new TitleDataPoint { Label = "A", Value = 50 },
new TitleDataPoint { Label = "B", Value = 70 }
};
}Title Position
Control title placement using the Position property in Chart3DTitleStyle component. Use predefined positions like Chart3DTitlePosition.Top, Bottom, Left, or Right to reposition the title.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Bottom Title" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DTitleStyle Position="Chart3DTitlePosition.Bottom">
</Chart3DTitleStyle>
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@PositionData" XName="X" YName="Y"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class PositionDataPoint
{
public string X { get; set; }
public double Y { get; set; }
}
public List<PositionDataPoint> PositionData = new List<PositionDataPoint>
{
new PositionDataPoint { X = "Item", Y = 65 }
};
}Custom Title Position
Position the title at a specific location using the Position property set to Chart3DTitlePosition.Custom and use X and Y properties in Chart3DTitleStyle component to define pixel coordinates.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Custom Position Title" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DTitleStyle Position="Chart3DTitlePosition.Custom" X="300" Y="60">
</Chart3DTitleStyle>
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@CustomData" XName="Label" YName="Count"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class CustomDataPoint
{
public string Label { get; set; }
public double Count { get; set; }
}
public List<CustomDataPoint> CustomData = new List<CustomDataPoint>
{
new CustomDataPoint { Label = "Data", Count = 80 }
};
}Title Alignment
Align the title horizontally using the TextAlignment property in Chart3DTitleStyle component. Use alignment values like Alignment.Near (left), Center, or Far (right) to position the text.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Aligned Title" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DTitleStyle TextAlignment="Syncfusion.Blazor.Chart3D.Alignment.Far">
</Chart3DTitleStyle>
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@AlignData" XName="X" YName="Y"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class AlignDataPoint
{
public string X { get; set; }
public double Y { get; set; }
}
public List<AlignDataPoint> AlignData = new List<AlignDataPoint>
{
new AlignDataPoint { X = "Value", Y = 75 }
};
}Best Practices
1. Color Palette Selection:
- Choose colors that provide good contrast
- Use consistent color schemes across charts
- Consider colorblind-friendly palettes
- Limit palette to 5-7 colors for clarity
2. Point Customization:
- Use point colors to highlight important data
- Maintain consistency in color meanings
- Test color combinations for visibility
3. Background and Borders:
- Use subtle backgrounds that don't distract
- Ensure borders enhance, not overwhelm
- Match chart style with application theme
4. Animation:
- Keep animations smooth (1000-2000ms duration)
- Use delays for staggered effects
- Don't overuse animations
- Test performance with large datasets
5. Rotation:
- Enable for better 3D perspective
- Set appropriate initial angles (7-15° rotation, 10-20° tilt)
- Test rotation on touch devices
6. Title Styling:
- Use readable font sizes (18-24px)
- Maintain sufficient contrast
- Keep titles concise
- Align appropriately for layout
7. Margin and Spacing:
- Provide adequate breathing room
- Balance margins with chart size
- Consider responsive layouts
8. Performance Considerations:
- Limit complex animations for large datasets
- Optimize event handlers
- Test rendering performance
9. Accessibility:
- Ensure color contrast meets WCAG standards
- Don't rely solely on color to convey information
- Provide alternative text for charts
10. Consistency:
- Maintain consistent styling across application
- Use design tokens/variables when possible
- Document custom color palettes
Axes Configuration for Blazor 3D Charts
This reference provides comprehensive guidance on configuring axes in Syncfusion Blazor 3D Charts, including Category, Numeric, DateTime, DateTimeCategory, and Logarithmic axes.
Table of Contents
- Axis Types Overview
- Category Axis
- Numeric Axis
- DateTime Axis
- DateTimeCategory Axis
- Logarithmic Axis
- Common Axis Properties
- Best Practices
Axis Types Overview
Syncfusion Blazor 3D Charts support multiple axis types for different data scenarios:
- Category: For text-based categorical data (e.g., country names, product categories)
- Numeric: For numeric values (default axis type)
- DateTime: For date/time data with continuous time scale
- DateTimeCategory: For date/time data with non-linear intervals (e.g., business days only)
- Logarithmic: For data with wide range of magnitudes (e.g., 10⁻⁶ to 10⁶)
Use ValueType property in Chart3DPrimaryXAxis or Chart3DPrimaryYAxis to specify the axis type.
Category Axis
Category axes display text labels for discrete categories. Ideal for comparing values across different categories. Use the ValueType property set to Syncfusion.Blazor.Chart3D.ValueType.Category to enable this axis type.
Basic Category Axis
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Olympic Medals" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@MedalDetails" XName="Country" YName="Medals"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class MedalData
{
public string Country { get; set; }
public double Medals { get; set; }
}
public List<MedalData> MedalDetails = new List<MedalData>
{
new MedalData { Country = "USA", Medals = 46 },
new MedalData { Country = "GBR", Medals = 27 },
new MedalData { Country = "CHN", Medals = 26 },
new MedalData { Country = "RUS", Medals = 23 },
new MedalData { Country = "AUS", Medals = 16 },
new MedalData { Country = "IND", Medals = 36 }
};
}Category Axis with Label Placement
Control label placement using the LabelPlacement property with options BetweenTicks or OnTicks. This property determines where labels are positioned relative to axis ticks.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Quarterly Sales" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis LabelPlacement="Syncfusion.Blazor.Chart3D.LabelPlacement.OnTicks"
ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@SalesData" XName="Quarter" YName="Sales"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class QuarterlySales
{
public string Quarter { get; set; }
public double Sales { get; set; }
}
public List<QuarterlySales> SalesData = new List<QuarterlySales>
{
new QuarterlySales { Quarter = "Q1", Sales = 120 },
new QuarterlySales { Quarter = "Q2", Sales = 150 },
new QuarterlySales { Quarter = "Q3", Sales = 180 },
new QuarterlySales { Quarter = "Q4", Sales = 200 }
};
}Category Axis with Custom Range
Set custom range using the Minimum, Maximum, and Interval properties to control the axis bounds and label spacing.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Product Sales" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis Minimum="1" Maximum="5" Interval="2"
ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@ProductData" XName="Product" YName="Sales"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class ProductSales
{
public string Product { get; set; }
public double Sales { get; set; }
}
public List<ProductSales> ProductData = new List<ProductSales>
{
new ProductSales { Product = "Product A", Sales = 120 },
new ProductSales { Product = "Product B", Sales = 150 },
new ProductSales { Product = "Product C", Sales = 180 },
new ProductSales { Product = "Product D", Sales = 200 },
new ProductSales { Product = "Product E", Sales = 165 },
new ProductSales { Product = "Product F", Sales = 190 }
};
}Indexed Category Axis
For multiple series with different categories, use the IsIndexed property set to true. This ensures each category is positioned at a specific index regardless of the data source.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Weather Comparison" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis IsIndexed="true"
ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@Location1" XName="Month" YName="Temperature"
Type="Chart3DSeriesType.Column" Name="Location 1">
</Chart3DSeries>
<Chart3DSeries DataSource="@Location2" XName="Month" YName="Temperature"
Type="Chart3DSeriesType.Column" Name="Location 2">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class WeatherData
{
public string Month { get; set; }
public double Temperature { get; set; }
}
public List<WeatherData> Location1 = new List<WeatherData>
{
new WeatherData { Month = "Jan", Temperature = 15 },
new WeatherData { Month = "Feb", Temperature = 17 },
new WeatherData { Month = "Mar", Temperature = 20 }
};
public List<WeatherData> Location2 = new List<WeatherData>
{
new WeatherData { Month = "Jan", Temperature = 10 },
new WeatherData { Month = "Apr", Temperature = 22 },
new WeatherData { Month = "May", Temperature = 25 }
};
}Numeric Axis
Numeric axis is the default axis type for displaying numeric values. Set the ValueType property to Syncfusion.Blazor.Chart3D.ValueType.Double or omit it to use the default numeric axis.
Basic Numeric Axis
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Revenue Analysis" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Double">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@RevenueData" XName="Year" YName="Revenue"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class YearlyRevenue
{
public double Year { get; set; }
public double Revenue { get; set; }
}
public List<YearlyRevenue> RevenueData = new List<YearlyRevenue>
{
new YearlyRevenue { Year = 2015, Revenue = 120 },
new YearlyRevenue { Year = 2016, Revenue = 145 },
new YearlyRevenue { Year = 2017, Revenue = 170 },
new YearlyRevenue { Year = 2018, Revenue = 195 },
new YearlyRevenue { Year = 2019, Revenue = 220 }
};
}Numeric Axis with Custom Range
Customize range with the Minimum, Maximum, and Interval properties to define the axis scale and spacing between tick marks.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Sales Performance" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis Minimum="5" Maximum="75" Interval="10"
ValueType="Syncfusion.Blazor.Chart3D.ValueType.Double">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@PerformanceData" XName="Value" YName="Score"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class PerformanceMetric
{
public double Value { get; set; }
public double Score { get; set; }
}
public List<PerformanceMetric> PerformanceData = new List<PerformanceMetric>
{
new PerformanceMetric { Value = 10, Score = 45 },
new PerformanceMetric { Value = 20, Score = 62 },
new PerformanceMetric { Value = 30, Score = 78 },
new PerformanceMetric { Value = 40, Score = 85 },
new PerformanceMetric { Value = 50, Score = 91 },
new PerformanceMetric { Value = 60, Score = 94 },
new PerformanceMetric { Value = 70, Score = 97 }
};
}Numeric Axis with Range Padding
Control padding using the RangePadding property with options None, Round, Additional, Normal, or Auto. This property adds space around data values for better visualization.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Temperature Data" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryYAxis RangePadding="Syncfusion.Blazor.Chart3D.ChartRangePadding.Round">
</Chart3DPrimaryYAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@TempData" XName="Day" YName="Temp"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class TemperatureData
{
public double Day { get; set; }
public double Temp { get; set; }
}
public List<TemperatureData> TempData = new List<TemperatureData>
{
new TemperatureData { Day = 1, Temp = 23.5 },
new TemperatureData { Day = 2, Temp = 25.8 },
new TemperatureData { Day = 3, Temp = 27.3 },
new TemperatureData { Day = 4, Temp = 26.2 },
new TemperatureData { Day = 5, Temp = 24.9 }
};
}DateTime Axis
DateTime axis displays date/time values on a continuous time scale. Set the ValueType property to Syncfusion.Blazor.Chart3D.ValueType.DateTime to enable this axis type.
Basic DateTime Axis
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Sales Trend" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.DateTime">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@SalesTrend" XName="Date" YName="Sales"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class SalesRecord
{
public DateTime Date { get; set; }
public double Sales { get; set; }
}
public List<SalesRecord> SalesTrend = new List<SalesRecord>
{
new SalesRecord { Date = new DateTime(2023, 1, 1), Sales = 120 },
new SalesRecord { Date = new DateTime(2023, 3, 1), Sales = 145 },
new SalesRecord { Date = new DateTime(2023, 5, 1), Sales = 170 },
new SalesRecord { Date = new DateTime(2023, 7, 1), Sales = 195 },
new SalesRecord { Date = new DateTime(2023, 9, 1), Sales = 220 },
new SalesRecord { Date = new DateTime(2023, 11, 1), Sales = 240 }
};
}DateTime Axis with Custom Range
Set minimum and maximum dates using the Minimum and Maximum properties to limit the axis range to a specific time period. The Interval property controls the spacing between axis labels.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Monthly Revenue" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis Minimum="@MinDate" Maximum="@MaxDate" Interval="1"
ValueType="Syncfusion.Blazor.Chart3D.ValueType.DateTime">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@MonthlyData" XName="Date" YName="Revenue"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public DateTime MinDate = new DateTime(2023, 1, 1);
public DateTime MaxDate = new DateTime(2023, 12, 31);
public class MonthlyRecord
{
public DateTime Date { get; set; }
public double Revenue { get; set; }
}
public List<MonthlyRecord> MonthlyData = new List<MonthlyRecord>
{
new MonthlyRecord { Date = new DateTime(2023, 2, 1), Revenue = 150 },
new MonthlyRecord { Date = new DateTime(2023, 4, 1), Revenue = 180 },
new MonthlyRecord { Date = new DateTime(2023, 6, 1), Revenue = 210 },
new MonthlyRecord { Date = new DateTime(2023, 8, 1), Revenue = 240 },
new MonthlyRecord { Date = new DateTime(2023, 10, 1), Revenue = 270 }
};
}DateTime Axis with Interval Customization
Customize intervals using the Interval and IntervalType properties to control the frequency of axis labels based on time units like Years, Months, Days, Hours, or Minutes.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Yearly Growth" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis Interval="2"
IntervalType="Syncfusion.Blazor.Chart3D.IntervalType.Years"
ValueType="Syncfusion.Blazor.Chart3D.ValueType.DateTime">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@YearlyGrowth" XName="Year" YName="Growth"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class GrowthData
{
public DateTime Year { get; set; }
public double Growth { get; set; }
}
public List<GrowthData> YearlyGrowth = new List<GrowthData>
{
new GrowthData { Year = new DateTime(2015, 1, 1), Growth = 100 },
new GrowthData { Year = new DateTime(2017, 1, 1), Growth = 150 },
new GrowthData { Year = new DateTime(2019, 1, 1), Growth = 200 },
new GrowthData { Year = new DateTime(2021, 1, 1), Growth = 280 },
new GrowthData { Year = new DateTime(2023, 1, 1), Growth = 350 }
};
}DateTimeCategory Axis
DateTimeCategory axis displays date/time values with non-linear intervals (e.g., business days only). Set the ValueType property to Syncfusion.Blazor.Chart3D.ValueType.DateTimeCategory to enable this axis type.
Basic DateTimeCategory Axis
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Business Days Sales" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.DateTimeCategory">
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@BusinessData" XName="Day" YName="Sales"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class DailySales
{
public DateTime Day { get; set; }
public double Sales { get; set; }
}
public List<DailySales> BusinessData = new List<DailySales>
{
new DailySales { Day = new DateTime(2023, 10, 2), Sales = 120 }, // Monday
new DailySales { Day = new DateTime(2023, 10, 3), Sales = 135 }, // Tuesday
new DailySales { Day = new DateTime(2023, 10, 4), Sales = 150 }, // Wednesday
new DailySales { Day = new DateTime(2023, 10, 5), Sales = 145 }, // Thursday
new DailySales { Day = new DateTime(2023, 10, 6), Sales = 160 } // Friday
// Weekend days (Oct 7-8) are omitted - chart shows only business days
};
}Logarithmic Axis
Logarithmic axis uses logarithmic scale for data spanning multiple orders of magnitude. Set the ValueType property to Syncfusion.Blazor.Chart3D.ValueType.Logarithmic to enable this axis type.
Basic Logarithmic Axis
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Exponential Growth" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.DateTime">
</Chart3DPrimaryXAxis>
<Chart3DPrimaryYAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Logarithmic">
</Chart3DPrimaryYAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@ExponentialData" XName="Date" YName="Value"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class ExponentialRecord
{
public DateTime Date { get; set; }
public double Value { get; set; }
}
public List<ExponentialRecord> ExponentialData = new List<ExponentialRecord>
{
new ExponentialRecord { Date = new DateTime(2015, 1, 1), Value = 100 },
new ExponentialRecord { Date = new DateTime(2016, 1, 1), Value = 500 },
new ExponentialRecord { Date = new DateTime(2017, 1, 1), Value = 1000 },
new ExponentialRecord { Date = new DateTime(2018, 1, 1), Value = 5000 },
new ExponentialRecord { Date = new DateTime(2019, 1, 1), Value = 10000 },
new ExponentialRecord { Date = new DateTime(2020, 1, 1), Value = 50000 }
};
}Logarithmic Axis with Custom Range
Set custom range using the Minimum and Maximum properties to define the logarithmic scale bounds for better control over data visualization.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Population Growth" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.DateTime">
</Chart3DPrimaryXAxis>
<Chart3DPrimaryYAxis Minimum="100" Maximum="100000"
ValueType="Syncfusion.Blazor.Chart3D.ValueType.Logarithmic">
</Chart3DPrimaryYAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@PopulationData" XName="Year" YName="Population"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class PopulationRecord
{
public DateTime Year { get; set; }
public double Population { get; set; }
}
public List<PopulationRecord> PopulationData = new List<PopulationRecord>
{
new PopulationRecord { Year = new DateTime(1950, 1, 1), Population = 200 },
new PopulationRecord { Year = new DateTime(1960, 1, 1), Population = 800 },
new PopulationRecord { Year = new DateTime(1970, 1, 1), Population = 2000 },
new PopulationRecord { Year = new DateTime(1980, 1, 1), Population = 8000 },
new PopulationRecord { Year = new DateTime(1990, 1, 1), Population = 20000 },
new PopulationRecord { Year = new DateTime(2000, 1, 1), Population = 80000 }
};
}Logarithmic Axis with Custom Base
Change logarithmic base using the LogBase property to specify the base of logarithm (default is 10). This allows you to customize how data is scaled on the logarithmic axis.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Scientific Data" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.DateTime">
</Chart3DPrimaryXAxis>
<Chart3DPrimaryYAxis LogBase="2"
ValueType="Syncfusion.Blazor.Chart3D.ValueType.Logarithmic">
</Chart3DPrimaryYAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@ScientificData" XName="Time" YName="Measurement"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class ScientificMeasurement
{
public DateTime Time { get; set; }
public double Measurement { get; set; }
}
public List<ScientificMeasurement> ScientificData = new List<ScientificMeasurement>
{
new ScientificMeasurement { Time = new DateTime(2023, 1, 1), Measurement = 2 },
new ScientificMeasurement { Time = new DateTime(2023, 2, 1), Measurement = 4 },
new ScientificMeasurement { Time = new DateTime(2023, 3, 1), Measurement = 16 },
new ScientificMeasurement { Time = new DateTime(2023, 4, 1), Measurement = 64 },
new ScientificMeasurement { Time = new DateTime(2023, 5, 1), Measurement = 256 }
};
}Common Axis Properties
Properties applicable to all axis types:
Axis Title
Display axis labels using the Title property to provide descriptive text for the axis. This property accepts string values and helps users understand the data being displayed.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Sales Analysis" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category" Title="Products">
</Chart3DPrimaryXAxis>
<Chart3DPrimaryYAxis Title="Sales (in thousands)" >
</Chart3DPrimaryYAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@ProductSales" XName="Product" YName="Sales"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class ProductData
{
public string Product { get; set; }
public double Sales { get; set; }
}
public List<ProductData> ProductSales = new List<ProductData>
{
new ProductData { Product = "Laptop", Sales = 120 },
new ProductData { Product = "Phone", Sales = 180 },
new ProductData { Product = "Tablet", Sales = 140 }
};
}Axis Line Customization
Customize axis lines and grid lines using the Chart3DMajorGridLines and Chart3DMinorGridLines components with properties like Width and Color to control appearance.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Custom Axis Lines" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
<Chart3DMajorGridLines Width="2" Color="blue" />
<Chart3DMinorGridLines Width="1" Color="lightblue" />
</Chart3DPrimaryXAxis>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@ChartData" XName="Category" YName="Value"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class DataPoint
{
public string Category { get; set; }
public double Value { get; set; }
}
public List<DataPoint> ChartData = new List<DataPoint>
{
new DataPoint { Category = "A", Value = 50 },
new DataPoint { Category = "B", Value = 70 },
new DataPoint { Category = "C", Value = 90 }
};
}Multiple Y-Axes
Create multiple axes using the Chart3DAxes collection and configure secondary axes with properties like Name to identify each axis, OpposedPosition to position them on opposite sides, and Title for labeling. Associate series to specific axes using the YAxisName property.
@using Syncfusion.Blazor.Chart3D
<SfChart3D Title="Multiple Axes" WallColor="transparent" EnableRotation="true"
RotationAngle="7" TiltAngle="10" Depth="100">
<Chart3DPrimaryXAxis ValueType="Syncfusion.Blazor.Chart3D.ValueType.Category">
</Chart3DPrimaryXAxis>
<Chart3DPrimaryYAxis Title="Temperature (°C)">
</Chart3DPrimaryYAxis>
<Chart3DAxes>
<Chart3DAxis Name="yAxis1" OpposedPosition="true" Title="Rainfall (mm)">
</Chart3DAxis>
</Chart3DAxes>
<Chart3DSeriesCollection>
<Chart3DSeries DataSource="@WeatherData" XName="Month" YName="Temperature"
Type="Chart3DSeriesType.Column">
</Chart3DSeries>
<Chart3DSeries DataSource="@WeatherData" XName="Month" YName="Rainfall"
Type="Chart3DSeriesType.Column" YAxisName="yAxis1">
</Chart3DSeries>
</Chart3DSeriesCollection>
</SfChart3D>
@code {
public class WeatherInfo
{
public string Month { get; set; }
public double Temperature { get; set; }
public double Rainfall { get; set; }
}
public List<WeatherInfo> WeatherData = new List<WeatherInfo>
{
new WeatherInfo { Month = "Jan", Temperature = 15, Rainfall = 50 },
new WeatherInfo { Month = "Feb", Temperature = 18, Rainfall = 40 },
new WeatherInfo { Month = "Mar", Temperature = 22, Rainfall = 30 }
};
}Best Practices
1. Choose Appropriate Axis Type:
- Use Category for discrete text-based data
- Use Numeric for continuous numeric data
- Use DateTime for time-series data with regular intervals
- Use DateTimeCategory for non-linear time data
- Use Logarithmic for wide-ranging data
2. Set Proper Ranges:
- Let the chart auto-calculate ranges when possible
- Use custom ranges for focused data views
- Ensure minimum < maximum
- Choose intervals that make sense for your data
3. Label Placement:
- Use BetweenTicks (default) for most scenarios
- Use OnTicks when precise alignment is needed
4. Performance Considerations:
- Avoid too many axis labels (use appropriate intervals)
- Use indexed category axis for multiple series with different categories
5. Accessibility:
- Always provide meaningful axis titles
- Use appropriate label formats
- Ensure sufficient contrast for axis lines
6. Range Padding:
- Use None for exact data boundaries
- Use Round for cleaner axis values
- Use Additional for extra padding
- Use Normal for balanced padding
- Use Auto to let the chart decide
7. Logarithmic Axes:
- Only use when data spans multiple orders of magnitude
- Choose appropriate LogBase (default is 10)
- Ensure all data values are positive
8. DateTime Intervals:
- Choose IntervalType based on data granularity
- Use Years for long-term trends
- Use Months/Days for medium-term data
- Use Hours/Minutes for short-term data