Implementation guide for Syncfusion WinUI Polar Chart (SfPolarChart) control. Use this when working with polar charts, radar charts, or spider charts for radial data visualization in WinUI applications. This skill covers line and area series for visualizing data in terms of values and angles, multi-dimensional data comparison, and directional data visualization with PolarLineSeries and PolarAreaSeries.
Comprehensive guide for implementing the Syncfusion® WinUI Polar Chart (SfPolarChart) control in Windows App SDK applications. Polar charts visualize data in terms of values and angles, making them ideal for comparing multiple dimensions or showing directional data.
Use this skill when the user needs to:
Control: SfPolarChart
Namespace: Syncfusion.UI.Xaml.Charts
Package: Syncfusion.Chart.WinUI
Platform: WinUI 3 (Windows App SDK)
📄 Read: references/getting-started.md
Syncfusion.Chart.WinUI)📄 Read: references/series-types.md
📄 Read: references/axis-configuration.md
📄 Read: references/axis-customization.md
📄 Read: references/title-legend.md
📄 Read: references/data-labels.md
📄 Read: references/appearance.md
📄 Read: references/start-angle.md
📄 Read: references/troubleshooting.md
Here's a minimal working example to create a polar area chart:
public class PlantData
{
public string Direction { get; set; }
public double Tree { get; set; }
}
using System.Collections.ObjectModel;
public class ChartViewModel
{
public ObservableCollection<PlantData> PlantDetails { get; set; }
public ChartViewModel()
{
PlantDetails = new ObservableCollection<PlantData>()
{
new PlantData { Direction = "North", Tree = 80 },
new PlantData { Direction = "NorthEast", Tree = 87 },
new PlantData { Direction = "East", Tree = 78 },
new PlantData { Direction = "SouthEast", Tree = 85 },
new PlantData { Direction = "South", Tree = 81 },
new PlantData { Direction = "SouthWest", Tree = 88 },
new PlantData { Direction = "West", Tree = 80 },
new PlantData { Direction = "NorthWest", Tree = 85 }
};
}
}
<Window
x:Class="PolarChartDemo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:chart="using:Syncfusion.UI.Xaml.Charts"
xmlns:local="using:PolarChartDemo">
<chart:SfPolarChart Header="Plant Distribution">
<!-- Set DataContext to ViewModel -->
<chart:SfPolarChart.DataContext>
<local:ChartViewModel/>
</chart:SfPolarChart.DataContext>
<!-- Primary Axis (Angular) -->
<chart:SfPolarChart.PrimaryAxis>
<chart:CategoryAxis/>
</chart:SfPolarChart.PrimaryAxis>
<!-- Secondary Axis (Radial) -->
<chart:SfPolarChart.SecondaryAxis>
<chart:NumericalAxis/>
</chart:SfPolarChart.SecondaryAxis>
<!-- Legend -->
<chart:SfPolarChart.Legend>
<chart:ChartLegend/>
</chart:SfPolarChart.Legend>
<!-- Series -->
<chart:SfPolarChart.Series>
<chart:PolarAreaSeries ItemsSource="{Binding PlantDetails}"
XBindingPath="Direction"
YBindingPath="Tree"
Label="Tree"
ShowDataLabels="True"/>
</chart:SfPolarChart.Series>
</chart:SfPolarChart>
</Window>
using Syncfusion.UI.Xaml.Charts;
public sealed partial class MainWindow : Window
{
public MainWindow()
{
this.InitializeComponent();
// Create chart
SfPolarChart chart = new SfPolarChart();
chart.Header = "Plant Distribution";
// Set ViewModel
ChartViewModel viewModel = new ChartViewModel();
chart.DataContext = viewModel;
// Configure axes
chart.PrimaryAxis = new CategoryAxis();
chart.SecondaryAxis = new NumericalAxis();
// Add legend
chart.Legend = new ChartLegend();
// Create series
PolarAreaSeries series = new PolarAreaSeries();
series.XBindingPath = "Direction";
series.YBindingPath = "Tree";
series.Label = "Tree";
series.ShowDataLabels = true;
series.SetBinding(
ChartSeriesBase.ItemsSourceProperty,
new Binding() { Path = new PropertyPath("PlantDetails") });
chart.Series.Add(series);
// Add chart to window
this.Content = chart;
}
}
Create a classic radar chart with polygon grid lines:
<chart:SfPolarChart GridLineType="Polygon">
<chart:SfPolarChart.PrimaryAxis>
<chart:CategoryAxis/>
</chart:SfPolarChart.PrimaryAxis>
<chart:SfPolarChart.SecondaryAxis>
<chart:NumericalAxis/>
</chart:SfPolarChart.SecondaryAxis>
<chart:PolarLineSeries ItemsSource="{Binding Data}"
XBindingPath="Category"
YBindingPath="Value"
IsClosed="True"/>
</chart:SfPolarChart>
Compare multiple datasets on the same chart:
<chart:SfPolarChart Header="Multi-Series Comparison">
<chart:SfPolarChart.Legend>
<chart:ChartLegend/>
</chart:SfPolarChart.Legend>
<chart:SfPolarChart.Series>
<chart:PolarLineSeries ItemsSource="{Binding SeriesA}"
XBindingPath="Category"
YBindingPath="Value"
Label="Product A"/>
<chart:PolarLineSeries ItemsSource="{Binding SeriesB}"
XBindingPath="Category"
YBindingPath="Value"
Label="Product B"/>
<chart:PolarLineSeries ItemsSource="{Binding SeriesC}"
XBindingPath="Category"
YBindingPath="Value"
Label="Product C"/>
</chart:SfPolarChart.Series>
</chart:SfPolarChart>
Add formatted data labels with custom appearance:
<chart:PolarAreaSeries ShowDataLabels="True">
<chart:PolarAreaSeries.DataLabelSettings>
<chart:PolarDataLabelSettings Context="YValue"
Foreground="White"
Background="#1E88E5"
BorderBrush="White"
BorderThickness="1"
FontSize="12"
FontFamily="Calibri"
Format="#.0"/>
</chart:PolarAreaSeries.DataLabelSettings>
</chart:PolarAreaSeries>
Apply custom colors to the chart:
<chart:SfPolarChart>
<chart:SfPolarChart.Resources>
<BrushCollection x:Key="customBrushes">
<SolidColorBrush Color="#4dd0e1"/>
<SolidColorBrush Color="#26c6da"/>
<SolidColorBrush Color="#00bcd4"/>
</BrushCollection>
</chart:SfPolarChart.Resources>
<chart:SfPolarChart PaletteBrushes="{StaticResource customBrushes}">
<!-- Chart content -->
</chart:SfPolarChart>
</chart:SfPolarChart>
| Property | Type | Description |
|---|---|---|
Header | object | Chart title/header |
PrimaryAxis | ChartAxis | Angular axis (around the circle) |
SecondaryAxis | ChartAxis | Radial axis (from center outward) |
Series | ChartSeriesCollection | Collection of series to display |
Legend | ChartLegend | Legend configuration |
GridLineType | PolarChartGridLineType | Circle or Polygon |
StartAngle | ChartPolarAngle | Starting angle (0°, 90°, 180°, 270°) |
PaletteBrushes | IList<Brush> | Custom color palette |
| Property | Type | Description |
|---|---|---|
ItemsSource | IEnumerable | Data source for the series |
XBindingPath | string | Property path for X values (categories) |
YBindingPath | string | Property path for Y values (numeric) |
Label | string | Series label for legend |
ShowDataLabels | bool | Show/hide data labels |
IsClosed | bool | Close the path (connect last to first) |
Fill | Brush | Fill color for the series |
Stroke | Brush | Stroke color for line series |
DataLabelSettings | PolarDataLabelSettings | Data label configuration |
| Property | Type | Description |
|---|---|---|
Header | object | Axis title |
Minimum | double | Minimum axis value |
Maximum | double | Maximum axis value |
Interval | double | Interval between labels |
LabelRotation | double | Rotation angle for labels |
LabelStyle | LabelStyle | Label formatting and appearance |
Scenario: Compare product performance across multiple metrics
Implementation: Multi-series polar chart with polygon grid
Read: references/series-types.md for multiple series
Scenario: Display wind speed/direction or precipitation patterns
Implementation: Polar area chart with directional categories
Read: references/getting-started.md for data binding
Scenario: Visualize employee or player skills across dimensions
Implementation: Radar chart with data labels showing scores
Read: references/data-labels.md for label customization
Scenario: Show product quality across multiple test parameters
Implementation: Polar line chart with custom color coding
Read: references/appearance.md for styling
Scenario: Plot experimental results with logarithmic scale
Implementation: Polar chart with logarithmic axis
Read: references/axis-configuration.md for axis types
Choose the right series type:
Grid line type selection:
Axis configuration:
Data labels:
Multiple series:
Performance:
Accessibility:
Next Steps: Navigate to a specific reference document above to implement polar chart features in your WinUI application.