AABBbaby

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

数据可视化新方式,SankeyDiagramControl类的使用你不能错过!(Part 1)

下载DevExpress v20.2完整版

DevExpress WinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!

命名空间:DevExpress.XtraCharts.Sankey

程序集:DevExpress.XtraCharts.v20.2.UI.dll

声明

C#

[SerializationContext(typeof(SankeySerializationContext))]
public class SankeyDiagramControl :
Control,
ISankeyContainer,
IToolTipControlClient,
ISupportLookAndFeel,
ISankeyRenderProvider,
IChartRenderProvider,
IPrintable,
IBasePrintable

VB.NET

<SerializationContext(GetType(SankeySerializationContext))>
Public Class SankeyDiagramControl
Inherits Control
Implements ISankeyContainer,
IToolTipControlClient,
ISupportLookAndFeel,
ISankeyRenderProvider,
IChartRenderProvider,
IPrintable,
IBasePrintable
注释

Sankey图表描述系统中实体(也称为节点)之间的转移或流,该图可以帮助您找到对流程最重要的贡献。

下图显示了图元素:

DevExpress WinForms使用教程:Sankey Diagram控件

每个链接都连接源节点和目标节点,并具有分配的值-权重,链接的宽度与其重量成正比。

添加到项目

将SankeyDiagramControl组件从Toolbox拖放到窗体中,来将Sankey图添加到项目中。

DevExpress WinForms使用教程:Sankey Diagram控件

这会将对以下程序集的引用添加到项目中:

  • DevExpress.Charts.v20.2.Core.dll
  • DevExpress.Data.Desktop.v20.2.dll
  • DevExpress.Data.v20.2.dll
  • DevExpress.Printing.v20.2.Core.dll
  • DevExpress.XtraPrinting.v20.2.dll
  • DevExpress.Utils.v20.2.dll
  • DevExpress.Utils.v20.2.Core.dll
  • DevExpress.XtraBars.v20.2.dll
  • DevExpress.XtraCharts.v20.2.dll
  • DevExpress.XtraCharts.v20.2.UI.dll
  • DevExpress.XtraCharts.v20.2.Wizard.dll
  • DevExpress.XtraEditors.v20.2.dll

绑定到数据

使用DataSource属性将控件绑定到数据源,您可以为该属性分配一个实现以下任何接口的对象:IList,IListSource或IBindingList。

然后指定存储用于源节点、目标节点和权重数据的数据成员名称:

  • SourceDataMember - 指定包含源节点标签的数据成员的名称。
  • TargetDataMember - 指定包含目标节点标签数据成员的名称。
  • WeightDataMember (Optional) - 指定包含链接权重的数据成员名称,如果未指定WeightDataMember属性,则权重等于1。

C#

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using DevExpress.XtraCharts.Sankey;
namespace SankeySample {
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e) {
sankeyDiagramControl1.DataSource = GetSankeyItems();
sankeyDiagramControl1.SourceDataMember = "Source";
sankeyDiagramControl1.TargetDataMember = "Target"; 
sankeyDiagramControl1.WeightDataMember = "Value";
sankeyDiagramControl1.Titles.Add(new SankeyTitle { Text = "Export/Import" });
}
List<SankeyItem> GetSankeyItems() {
List<SankeyItem> data = new List<SankeyItem> {
new SankeyItem { Source = "France", Target = "UK", Value = 53 },
new SankeyItem { Source = "Australia", Target = "UK", Value = 72 },
new SankeyItem { Source = "France", Target = "Canada", Value = 81 },
new SankeyItem { Source = "China", Target = "Canada", Value = 96 },
new SankeyItem { Source = "UK", Target = "France", Value = 61 },
new SankeyItem { Source = "Canada", Target = "France", Value = 89 },
};
return data;
}
}
public class SankeyItem {
public string Source { get; set; }
public string Target { get; set; }
public double Value { get; set; }
}
}

VB.NET

Imports System
Imports System.Collections.Generic
Imports System.Windows.Forms
Imports DevExpress.XtraCharts.Sankey

Namespace SankeySample
Public Partial Class Form1
Inherits Form

Public Sub New()
InitializeComponent()
End Sub

Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs)
sankeyDiagramControl1.DataSource = GetSankeyItems()
sankeyDiagramControl1.SourceDataMember = "Source"
sankeyDiagramControl1.TargetDataMember = "Target" 
sankeyDiagramControl1.WeightDataMember = "Value"
sankeyDiagramControl1.Titles.Add(New SankeyTitle With {
.Text = "Export/Import"
})
End Sub

Private Function GetSankeyItems() As List(Of SankeyItem)
Dim data As List(Of SankeyItem) = New List(Of SankeyItem) From {
New SankeyItem With {
.Source = "France", .Target = "UK", .Value = 53
},
New SankeyItem With {
.Source = "Australia", .Target = "UK", .Value = 72
},
New SankeyItem With {
.Source = "France", .Target = "Canada", .Value = 81
},
New SankeyItem With {
.Source = "China", .Target = "Canada", .Value = 96
},
New SankeyItem With {
.Source = "UK", .Target = "France", .Value = 61
},
New SankeyItem With {
.Source = "Canada", .Target = "France", .Value = 89
}
}
Return data
End Function
End Class

Public Class SankeyItem
Public Property Source As String
Public Property Target As String
Public Property Value As Double
End Class
End Namespace

结果:

DevExpress WinForms使用教程:Sankey Diagram控件

上DevExpress中文网,获取第一手最新产品资讯!

DevExpress技术交流群2:775869749      欢迎一起进群讨论

posted on   AABBbaby  阅读(227)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
历史上的今天:
2019-11-19 .NET Core 3时代如何转换.NET 4项目,DevExpress Winforms帮你忙!
点击右上角即可分享
微信分享提示