New to Telerik UI for BlazorStart a free 30-day trial

Sankey Legend

The Telerik Sankey Diagram for Blazor can show a legend, which is a visual guide with details about the nodes. This article explores how to customize the Sankey legend.

Basic Customization

To customize the legend in the Sankey chart, declare a <SankeyLegend> tag as a direct child of <TelerikSankey>. The <SankeyLegend> tag has the following parameters:

ParameterType and Default ValueDescription
AlignSankeyLegendAlign enum
(Start)
The alignment of the legend.
BackgroundstringThe background color of the legend.
Heightdouble?The height of the legend.
OffsetXdouble?The X offset of the legend. The offset is relative to the current position of the legend.
OffsetYdouble?The Y offset of the legend. The offset is relative to the current position of the legend.
OrientationSankeyLegendOrientation enum
(Horizontal)
The orientation of the legend.
PositionSankeyLegendPosition enum
(Bottom)
The position of the legend.
Reversedouble?Whether the legend items are reversed.
Spacingdouble?The spacing between the labels of the legend.
Visiblebool?
(true)
Whether the legend is visible.
Widthdouble?The width of the legend. Applies when Orientation="SankeyLegendOrientation.Horizontal".

Nested Customization Tags

The <SankeyLegend> tag exposes nested tags for further customization of the separate legend elements. The structure of the nested tags is <SankeyLegend*Specifics*>, where the specifics can be:

  • Border
  • Item
  • Labels - exposes additional nested options. The structure of the nested tags is <SankeyLegendLabels*Specifics*>, where the specifics can be:
  • Margin
  • Padding
  • Title - exposes additional nested options. The structure of the nested tags is <SankeyLegendTitle*Specifics*>, where the specifics can be:

Use the IntelliSense to explore the nested tags and their properties.

Example

Customizing the Sankey legend by using nested tag settings

<TelerikSankey Data="@Data"
               DisableAutoLayout="true"
               Height="400px">
    <SankeyLinks ColorType="@SankeyLinksColorType.Source" />
    <SankeyLegend Position="@SankeyLegendPosition.Top" Background="rgba(255, 99, 88, 0.1)">
        <SankeyLegendTitle Text="Device usage by age groups" Font="bold 17px sans-serif">
            <SankeyLegendTitlePadding Bottom="20"></SankeyLegendTitlePadding>
        </SankeyLegendTitle>
        <SankeyLegendItem AreaOpacity="0.7" />
        <SankeyLegendMargin Bottom="20" />
        <SankeyLegendPadding Top="10" Bottom="10" />
    </SankeyLegend>
</TelerikSankey>

@code {
    private SankeyData? Data { get; set; }

    protected override void OnInitialized()
    {
        var sourceNodes = 3;
        var destinationNodes = 3;

        Data = new SankeyData()
            {
                Nodes = new SankeyDataNodes(),
                Links = new SankeyDataLinks()
            };

        for (int i = 1; i <= sourceNodes + destinationNodes; i++)
        {
            var nodeDescriptor = i <= sourceNodes ? "Source" : "Destination";
            Data.Nodes.Add(new SankeyDataNode() { Id = i, Label = new SankeyDataNodeLabel() { Text = $"{nodeDescriptor} {i}" } });
        }

        for (int i = 1; i <= sourceNodes; i++)
        {
            for (int j = sourceNodes + 1; j <= sourceNodes + destinationNodes; j++)
            {
                Data.Links.Add(new SankeyDataLink()
                    {
                        SourceId = i,
                        TargetId = j,
                        Value = Random.Shared.Next(5, 30)
                    });
            }
        }
    }
}

See Also