skills/syncfusion/winui-ui-components-skills/syncfusion-winui-polar-charts

syncfusion-winui-polar-charts

SKILL.md

Implementing Polar Charts in WinUI

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.

When to Use This Skill

Use this skill when the user needs to:

  • Create polar charts (also known as radar, spider, web, star, or cobweb charts)
  • Visualize multi-dimensional data with multiple categories around a center point
  • Compare multiple data series on the same radial scale
  • Display directional data (compass data, wind direction, plant distribution)
  • Show cyclical patterns or seasonal variations
  • Implement line or area series in polar coordinates
  • Customize grid line types (circular or polygon/radar style)
  • Configure axis types (Category, Numerical, DateTime, Logarithmic)
  • Add legends, data labels, and titles to polar charts
  • Apply custom styling and themes to polar visualizations

Component Overview

Control: SfPolarChart
Namespace: Syncfusion.UI.Xaml.Charts
Package: Syncfusion.Chart.WinUI
Platform: WinUI 3 (Windows App SDK)

Key Features

  • Two series types: PolarLineSeries and PolarAreaSeries
  • Multiple series support: Compare different datasets on the same chart
  • Grid line types: Circle (default) or Polygon (radar/spider style)
  • Four axis types: Category, Numerical, DateTime, Logarithmic
  • Rich customization: Legends, data labels, titles, appearance
  • Interactive features: Toggle series visibility, checkbox legends
  • Start angle control: Rotate chart to different starting positions (0°, 90°, 180°, 270°)
  • Closed/Open paths: Control whether series form closed loops
  • MVVM-friendly: Full data binding support

Typical Use Cases

  • Business analytics: Market analysis, competitive comparisons
  • Scientific visualization: Experiment results, multi-parameter analysis
  • Weather data: Wind patterns, precipitation by direction
  • Quality metrics: Performance across multiple dimensions
  • Sports analytics: Player statistics across different skills
  • Survey results: Opinion data across categories

Documentation and Navigation Guide

Getting Started

📄 Read: references/getting-started.md

  • Installation and NuGet package setup (Syncfusion.Chart.WinUI)
  • Basic polar chart implementation in XAML and C#
  • Creating data models and view models
  • Binding data to series (ItemsSource, XBindingPath, YBindingPath)
  • Setting up primary and secondary axes
  • Complete working example from scratch

Series Types

📄 Read: references/series-types.md

  • PolarLineSeries: Line-based polar series
  • PolarAreaSeries: Filled area polar series
  • Grid line types: Circle vs Polygon (radar/spider chart)
  • Closing paths: IsClosed property for open/closed series
  • Multiple series: Displaying multiple datasets together
  • Series customization and styling

Axis Configuration

📄 Read: references/axis-configuration.md

  • CategoryAxis: Index-based axis for categorical data
  • NumericalAxis: Numeric values with range customization
  • DateTimeAxis: Time-based data plotting
  • LogarithmicAxis: Logarithmic scale for large value ranges
  • Axis range customization (Minimum, Maximum, Interval)
  • Axis events (ActualRangeChanged, LabelCreated)

Axis Customization

📄 Read: references/axis-customization.md

  • Axis labels: Rotation, formatting, custom templates
  • Axis titles/headers: Adding and styling axis headers
  • Label style customization (fonts, colors, margins)
  • Header templates for advanced customization
  • Label format strings for different data types

Title and Legend

📄 Read: references/title-legend.md

  • Chart title: Header property and customization
  • Title alignment (left, center, right)
  • Legend configuration: Icons, spacing, placement
  • Checkbox legends for toggling series
  • Toggle series visibility interactively
  • Legend templates and background styling

Data Labels

📄 Read: references/data-labels.md

  • Enabling data labels (ShowDataLabels property)
  • Label context (YValue, XValue, Percentage)
  • Customization (fonts, colors, borders, margins)
  • Data label templates for advanced layouts
  • Format strings and rotation
  • UseSeriesPalette for color coordination
  • Connector lines between labels and data points

Appearance and Styling

📄 Read: references/appearance.md

  • Default palette brushes
  • Custom palette brushes: Define your own color schemes
  • Gradient support: LinearGradientBrush and RadialGradientBrush
  • Applying gradients to entire charts or individual series
  • Series Fill property customization
  • Theme integration

Start Angle and Positioning

📄 Read: references/start-angle.md

  • StartAngle property (Rotate0, Rotate90, Rotate180, Rotate270)
  • Changing rendering position of the chart
  • Use cases for different starting angles
  • Aligning charts with specific orientations

Troubleshooting

📄 Read: references/troubleshooting.md

  • Common setup and installation issues
  • Data binding problems and solutions
  • Rendering and display issues
  • Performance optimization tips
  • Best practices and FAQ

Quick Start Example

Here's a minimal working example to create a polar area chart:

1. Data Model

public class PlantData
{
    public string Direction { get; set; }
    public double Tree { get; set; }
}

2. View Model

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 }
        };
    }
}

3. XAML Implementation

<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>

4. C# Code-Behind (Alternative)

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;
    }
}

Common Patterns

Pattern 1: Radar/Spider Chart (Polygon Grid)

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>

Pattern 2: Multiple Series Comparison

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>

Pattern 3: Styled Data Labels

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>

Pattern 4: Custom Color Palette

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>

Key Properties

SfPolarChart Properties

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 Custom color palette

PolarSeries Properties

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

Axis Properties

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

Common Use Cases

Use Case 1: Market Analysis Dashboard

Scenario: Compare product performance across multiple metrics
Implementation: Multi-series polar chart with polygon grid
Read: references/series-types.md for multiple series

Use Case 2: Weather Data Visualization

Scenario: Display wind speed/direction or precipitation patterns
Implementation: Polar area chart with directional categories
Read: references/getting-started.md for data binding

Use Case 3: Skills Assessment

Scenario: Visualize employee or player skills across dimensions
Implementation: Radar chart with data labels showing scores
Read: references/data-labels.md for label customization

Use Case 4: Quality Metrics

Scenario: Show product quality across multiple test parameters
Implementation: Polar line chart with custom color coding
Read: references/appearance.md for styling

Use Case 5: Scientific Data

Scenario: Plot experimental results with logarithmic scale
Implementation: Polar chart with logarithmic axis
Read: references/axis-configuration.md for axis types

Best Practices

  1. Choose the right series type:

    • Use PolarLineSeries for trends and comparisons
    • Use PolarAreaSeries to emphasize magnitude and coverage
  2. Grid line type selection:

    • Use Circle for continuous data and smoother appearance
    • Use Polygon for categorical data and classic radar chart look
  3. Axis configuration:

    • Use CategoryAxis for named categories (directions, labels)
    • Use NumericalAxis for numeric ranges on radial axis
    • Set appropriate Minimum, Maximum, and Interval for readability
  4. Data labels:

    • Enable for small to medium datasets (< 20 points)
    • Use rotation and connector lines for better positioning
    • Format values appropriately for the data type
  5. Multiple series:

    • Limit to 3-5 series for clarity
    • Use distinct colors and legend
    • Consider line series for overlapping data
  6. Performance:

    • Use ObservableCollection for dynamic data
    • Avoid excessive data points in a single series
    • Implement data virtualization for very large datasets
  7. Accessibility:

    • Provide meaningful chart titles and axis labels
    • Use high-contrast colors
    • Include legend for series identification

Related Components

  • Circular Charts: For pie, doughnut, and radial bar charts
  • Cartesian Charts: For traditional X-Y coordinate charts (line, bar, column)
  • Gauges: For single-value radial indicators

Resources


Next Steps: Navigate to a specific reference document above to implement polar chart features in your WinUI application.

Weekly Installs
5
First Seen
1 day ago
Installed on
opencode5
gemini-cli5
deepagents5
antigravity5
github-copilot5
codex5