雷达图是径向图,有助于可视化两组或多组值与各种特征或特征的比较。这些图表表示每个变量在单独的轴上,这些轴围绕中心径向排列,彼此之间的距离相等。这些轴中的每一个共享相同的刻度线和刻度。每个观测值的数据将沿这些轴绘制,然后连接以形成多边形。多个观测值(即绘制在图表上的多边形)也是识别每个变量中异常值的好方法。雷达图通常用于分析性能或比较收入和支出等值,如下图所示。
极坐标图是雷达图的另一种变体,其中 X 值是以度为单位指定角度值的数字。
FlexChart for WinForms 通过由 FlexRadar 类表示的独立控件提供雷达图。可以使用数据源属性将图表与数据绑定。您需要通过设置 Binding 和 BindingX 属性向图表提供 X 和 Y 值。FlexChart 还允许您通过设置 StartAngle 属性来指定要开始按顺时针方向绘制图表的角度。若要按逆时针方向呈现雷达图,需要将 Reversed 属性设置为 true。FlexChart 还提供了 ChartType 属性,以便您可以选择是否要以折线图、折线符号、散点图或面积图格式显示雷达图。此属性接受来自雷达图表类型枚举的值。
要使用弹性图表创建雷达图:
1、将 FlexRadar 控件拖放到窗体中。
2、右键单击窗体上的 FlexRadar
控件以打开“属性”窗口。
3、使用数据源属性设置数据源。
4、通过分别设置 BindingX 和 Binding 属性来配置图表。
若要通过代码创建 WinForms 雷达图,初始化控件后的第一步是清除默认序列。通过 DataSource 属性设置数据源,并通过设置 BindingX 属性配置 X 轴(径向轴)。然后,使用 Add 方法添加新系列,并为每个添加的系列设置 Binding 属性。
Vb.Net
' clear data series collection
flexRadar1.Series.Clear()
' create and add series for Unit Price field
Dim series1 As New C1.Win.Chart.Series()
flexRadar1.Series.Add(series1)
series1.Binding = "Unit Price"
series1.Name = "Unit Price"
' create and add series for Units In Stock field
Dim series2 As New C1.Win.Chart.Series()
flexRadar1.Series.Add(series2)
series2.Binding = "Units In Stock"
series2.Name = "Units In Stock"
' create and add series for Units On Order field
Dim series3 As New C1.Win.Chart.Series()
flexRadar1.Series.Add(series3)
series3.Binding = "Units On Order"
series3.Name = "Units On Order"
' specify the datasource for the chart
flexRadar1.DataSource = GetData()
' bind the X-axis
flexRadar1.BindingX = "Beverages"
C# |
// clear data series collection flexRadar1.Series.Clear(); // create and add series for Unit Price field C1.Win.Chart.Series series1 = new C1.Win.Chart.Series(); flexRadar1.Series.Add(series1); series1.Binding = "Unit Price"; series1.Name = "Unit Price"; // create and add series for Units In Stock field C1.Win.Chart.Series series2 = new C1.Win.Chart.Series(); flexRadar1.Series.Add(series2); series2.Binding = "Units In Stock"; series2.Name = "Units In Stock"; // create and add series for Units On Order field C1.Win.Chart.Series series3 = new C1.Win.Chart.Series(); flexRadar1.Series.Add(series3); series3.Binding = "Units On Order"; series3.Name = "Units On Order"; // specify the datasource for the chart flexRadar1.DataSource = GetData(); // bind the X-axis flexRadar1.BindingX = "Beverages"; |
注意,上面的示例代码使用名为 GetData 的自定义方法向图表提供数据。您可以根据需要设置数据源。
Vb.Net |
''' <summary> ''' Method for creating data for FlexRadar ''' </summary> Private rnd As New Random() Public Function GetData() As DataTable ' create a datatable Dim dt As New DataTable("Product Comparison") ' add columns to the datatable dt.Columns.Add("Beverages", GetType(String)) dt.Columns.Add("Unit Price", GetType(Integer)) dt.Columns.Add("Units In Stock", GetType(Integer)) dt.Columns.Add("Units On Order", GetType(Integer)) ' add rows to the datatable dt.Rows.Add("Tea", 18, 39, 40) dt.Rows.Add("Coffee", 19, 17, 70) dt.Rows.Add("Cocktail", 10, 13, 30) dt.Rows.Add("Mock Tail", 22, 53, 20) dt.Rows.Add("Soft Drink", 21, 120, 70) dt.Rows.Add("Mineral Water", 25, 90, 40) Return dt End Function |
C# |
/// <summary> /// Method for creating data for FlexRadar /// </summary> Random rnd = new Random(); public DataTable GetData() { // create a datatable DataTable dt = new DataTable("Product Comparison"); // add columns to the datatable dt.Columns.Add("Beverages", typeof(string)); dt.Columns.Add("Unit Price", typeof(int)); dt.Columns.Add("Units In Stock", typeof(int)); dt.Columns.Add("Units On Order", typeof(int)); // add rows to the datatable dt.Rows.Add("Tea", 18, 39, 40); dt.Rows.Add("Coffee", 19, 17, 70); dt.Rows.Add("Cocktail", 10, 13, 30); dt.Rows.Add("Mock Tail", 22, 53, 20); dt.Rows.Add("Soft Drink", 21, 120, 70); dt.Rows.Add("Mineral Water", 25, 90, 40); return dt; } |