C# Winform Chart控件用法6之雷达图

1.ChartAreas属性

    ChartAreas属性指绘图区,一个控件可以有多个绘图区,比如我要在同一个控件内显示饼图和柱状图,肯定不能放在同一个ChartAreas区域内,应该在同一个Chart控件里增加两个ChartAreas并分别绑定Series对象。所以ChartAreas属性对应的是一个集合。

2.Series属性

    Series属性就是各种图表的图形啦,比如我们要显示某月的天气变化,那么应该有这样两组数据,一组是天数,一组是每天对应的温度值,同时绑定到Series对象中,再将Series对象Add()到Chart控件的Series属性里即可。为了横向比较,例如我要看本月与上月的天气曲线变化图,并同时显示在同一个ChartAreas中,那该怎么办呢?很简单,再实例一个Series对象,将上月的天数数组与温度值数组绑定到一个新的Series2实例中,再将Series2实例Add()到Chart控件的Series属性里,此时,Chart控件的第一个绘图区ChartArea里就会有两条曲线。

3.Legends属性

    Legend就是指一个图标的图例,当一个Series属性有多个Series时,或是一个Series有几组数据时,为了区分各自的颜色,通常每个Serie对象一种颜色,这就需要用到图例来指明哪个颜色的代表的是什么数据。

代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Forms.DataVisualization.Charting;

namespace Chart_之雷达图
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

            string[] x = new string[] { "成都大队", "广东大队", "广西大队", "云南大队", "上海大队", "苏州大队", "深圳大队", "北京大队", "湖北大队", "湖南大队", "重庆大队", "辽宁大队" };
            double[] y = new double[] { 589, 598, 445, 654, 884, 457, 941, 574, 745, 854, 684, 257 };
            string[] z = new string[] { "", "", "", "", "", "", "", "", "", "", "", "" };

            string[] a = new string[] { "成都大队", "广东大队", "广西大队", "云南大队", "上海大队" };
            double[] b = new double[] { 541, 574, 345, 854, 257 };

            #region 雷达图

            // //标题
            chart1.Titles.Add("消费行为TOP5");
            chart1.Titles[0].ForeColor = Color.Blue;
            chart1.Titles[0].Font = new Font("微软雅黑", 12f, FontStyle.Regular);
            chart1.Titles[0].Alignment = ContentAlignment.TopCenter;
            chart1.Titles.Add("合计:25412 宗 ");
            chart1.Titles[1].ForeColor = Color.Blue;
            chart1.Titles[1].Font = new Font("微软雅黑", 8f, FontStyle.Regular);
            chart1.Titles[1].Alignment = ContentAlignment.TopRight;

            //控件背景
            chart1.BackColor = Color.Transparent;
            chart1.ChartAreas[0].BackColor = Color.Transparent;
            chart1.ChartAreas[0].BorderColor = Color.Transparent;
            //X轴标签间距
            chart1.ChartAreas[0].AxisX.Interval = 1;
            chart1.ChartAreas[0].AxisX.LabelStyle.IsStaggered = true;
            chart1.ChartAreas[0].AxisX.LabelStyle.Angle = -45;
            chart1.ChartAreas[0].AxisX.TitleFont = new Font("微软雅黑", 14f, FontStyle.Regular);
            chart1.ChartAreas[0].AxisX.TitleForeColor = Color.Blue;

            //X坐标轴颜色
            chart1.ChartAreas[0].AxisX.LineColor = ColorTranslator.FromHtml("#38587a"); ;
            chart1.ChartAreas[0].AxisX.LabelStyle.ForeColor = Color.Blue;
            chart1.ChartAreas[0].AxisX.LabelStyle.Font = new Font("微软雅黑", 10f, FontStyle.Regular);
            //X坐标轴标题
            //chart1.ChartAreas[0].AxisX.Title = "数量(宗)";
            //chart1.ChartAreas[0].AxisX.TitleFont = new Font("微软雅黑", 10f, FontStyle.Regular);
            //chart1.ChartAreas[0].AxisX.TitleForeColor = Color.White;
            //chart1.ChartAreas[0].AxisX.TextOrientation = TextOrientation.Auto;
            //chart1.ChartAreas[0].AxisX.ToolTip = "数量(宗)";
            //X轴网络线条
            chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = true;
            chart1.ChartAreas[0].AxisX.MajorGrid.LineColor = ColorTranslator.FromHtml("#2c4c6d");

            //Y坐标轴颜色
            chart1.ChartAreas[0].AxisY.LineColor = ColorTranslator.FromHtml("#38587a");
            chart1.ChartAreas[0].AxisY.LabelStyle.ForeColor = Color.Blue;
            chart1.ChartAreas[0].AxisY.LabelStyle.Font = new Font("微软雅黑", 10f, FontStyle.Regular);
            //Y坐标轴标题
            //chart1.ChartAreas[0].AxisY.Title = "数量(宗)";
            //chart1.ChartAreas[0].AxisY.TitleFont = new Font("微软雅黑", 10f, FontStyle.Regular);
            //chart1.ChartAreas[0].AxisY.TitleForeColor = Color.White;
            //chart1.ChartAreas[0].AxisY.TextOrientation = TextOrientation.Auto;
            //chart1.ChartAreas[0].AxisY.ToolTip = "数量(宗)";
            //Y轴网格线条
            chart1.ChartAreas[0].AxisY.MajorGrid.Enabled = true;
            chart1.ChartAreas[0].AxisY.MajorGrid.LineColor = ColorTranslator.FromHtml("#2c4c6d");

            chart1.ChartAreas[0].AxisY2.LineColor = Color.Transparent;
            chart1.ChartAreas[0].AxisX.IsMarginVisible = false;
            chart1.ChartAreas[0].Area3DStyle.Enable3D = true;
            chart1.ChartAreas[0].AxisX.IsInterlaced = false;
            chart1.ChartAreas[0].AxisX.IsMarginVisible = false;
            //刻度线
            chart1.ChartAreas[0].AxisY.MajorTickMark.Enabled = false;
            //cht4.ChartAreas[0].AxisX.MajorGrid.Enabled = false;
            //cht4.ChartAreas[0].AxisY.MajorGrid.Enabled = false;
            //cht4.ChartAreas[0].AxisX.MajorTickMark.Enabled = false;
            chart1.ChartAreas[0].AxisY.LabelStyle.Enabled = false;
            //背景渐变
            chart1.ChartAreas[0].BackGradientStyle = GradientStyle.None;
            //chart1.ChartAreas[0].AxisX2.InterlacedColor = Color.Red;
            //chart1.ChartAreas[0].AxisY2.InterlacedColor = Color.Red;
            //chart1.ChartAreas[0].BorderWidth = 0;
            //chart1.ChartAreas[0].BackSecondaryColor = Color.Red;
            //chart1.ChartAreas[0].BackImageTransparentColor = Color.Red;
            //chart1.ChartAreas[0].AxisX.InterlacedColor = Color.Red;
            //chart1.ChartAreas[0].AxisX.LineColor = Color.Red;
            //chart1.ChartAreas[0].AxisX2.LineColor = Color.Red;
            //chart1.ChartAreas[0].AxisX2.MajorGrid.LineColor = Color.Red;
            //chart1.ChartAreas[0].AxisX2.MajorTickMark.LineColor = Color.Red;
            //chart1.ChartAreas[0].AxisX2.MinorTickMark.LineColor = Color.Red;
            //chart1.ChartAreas[0].AxisY.InterlacedColor = Color.Red;
            //chart1.ChartAreas[0].AxisY.LineColor = Color.Red;
            //chart1.ChartAreas[0].AxisY2.InterlacedColor = Color.Red;
            //chart1.ChartAreas[0].AxisY2.LineColor = Color.Red;
            //chart1.ChartAreas[0].AxisY2.MajorGrid.LineColor = Color.Red;
            //chart1.ChartAreas[0].AxisY2.MajorTickMark.LineColor = Color.Red;
            //chart1.ChartAreas[0].AxisY2.MinorTickMark.LineColor = Color.Red;


            //图例样式
            Legend legend4 = new Legend();
            legend4.Title = "图例";
            legend4.TitleBackColor = Color.Transparent;
            legend4.BackColor = Color.Transparent;
            legend4.TitleForeColor = Color.Blue;
            legend4.TitleFont = new Font("微软雅黑", 10f, FontStyle.Regular);
            legend4.Font = new Font("微软雅黑", 8f, FontStyle.Regular);
            legend4.ForeColor = Color.Blue;
            chart1.Legends.Add(legend4);
            chart1.Legends[0].Position.Auto = true;

            //Series1
            chart1.Series[0].XValueType = ChartValueType.String;
            chart1.Series[0].Label = "#VAL";
            chart1.Series[0].LabelForeColor = Color.Blue;
            chart1.Series[0].ToolTip = "#LEGENDTEXT:#VAL(宗)";
            chart1.Series[0].ChartType = SeriesChartType.Radar;
            chart1.Series[0]["RadarDrawingStyle"] = "Line";
            chart1.Series[0].LegendText = "2019年";
            chart1.Series[0].IsValueShownAsLabel = true;

            //Series2
            chart1.Series.Add(new Series("Series2"));
            chart1.Series[1].Label = "#VAL";
            chart1.Series[1].LabelForeColor = Color.Blue;
            chart1.Series[1].ToolTip = "#LEGENDTEXT:#VAL(宗)";
            chart1.Series[1].ChartType = SeriesChartType.Radar;
            chart1.Series[1]["RadarDrawingStyle"] = "Line";
            chart1.Series[1].LegendText = "2020年";
            chart1.Series[1].IsValueShownAsLabel = true;

            //Series3
            chart1.Series.Add(new Series("Series3"));
            chart1.Series[2].Label = "#VAL";
            chart1.Series[2].LabelForeColor = Color.Blue;
            chart1.Series[2].ToolTip = "#LEGENDTEXT:#VAL(宗)";
            chart1.Series[2].ChartType = SeriesChartType.Radar;
            chart1.Series[2]["RadarDrawingStyle"] = "Line";
            chart1.Series[2].LegendText = "2021年";
            chart1.Series[2].IsValueShownAsLabel = true;


            double[] yValues = { 65.62, 75.54, 60.45, 34.73, 85.42, 55.9, 63.6, 55.2, 77.1 };
            string[] xValues = { "France", "Canada", "Germany", "USA", "Italy", "Spain", "Russia", "Sweden", "Japan" };


            //Seris2  
            double[] y2 = { 45.62, 65.54, 70.45, 84.73, 35.42, 55.9, 63.6 };
            double[] y3 = { 88.62, 35.54, 52.45, 45.73, 88.42, 14.9, 33.6 };
            this.chart1.Series[0].Points.DataBindXY(xValues, yValues);
            this.chart1.Series[1].Points.DataBindY(y2);
            this.chart1.Series[2].Points.DataBindY(y3);


            //设置X轴显示间隔为1,X轴数据比较多的时候比较有用  
            chart1.ChartAreas[0].AxisX.LabelStyle.Interval = 1;
            //设置XY轴标题的名称所在位置位远  
            chart1.ChartAreas[0].AxisX.TitleAlignment = StringAlignment.Near;

            for (int i = 0; i < chart1.Series[2].Points.Count; i++)
            {
                chart1.Series[2].Points[i].MarkerStyle = MarkerStyle.Circle;//设置折点的风格     
                chart1.Series[2].Points[i].MarkerColor = Color.Red;//设置seires中折点的颜色   
                                                                 //    cht4.Series[1].Points[i].MarkerStyle = MarkerStyle.Square;//设置折点的风格     
                                                                 //    cht4.Series[1].Points[i].MarkerColor = Color.Blue;//设置seires中折点的颜色  
                                                                 //    cht4.Series[2].Points[i].MarkerStyle = MarkerStyle.Square;//设置折点的风格     
                                                                 //    cht4.Series[2].Points[i].MarkerColor = Color.Green;//设置seires中折点的颜色  
            }
            for (int i = 0; i < chart1.Series.Count; i++)
            {
                for (int j = 0; j < chart1.Series[i].Points.Count; j++)
                {
                    chart1.Series[i].Points[j].Label = " ";
                    //cht4.Series[i].Points[j].LabelToolTip = "string.Empty";
                }
            }
            //chart1.ImageType = ChartImageType.Jpeg;
            //反锯齿  
            chart1.AntiAliasing = AntiAliasingStyles.All;
            //调色板 磨沙:SemiTransparent  
            chart1.Palette = ChartColorPalette.BrightPastel;

            chart1.Series[0].ChartType = SeriesChartType.Radar;
            chart1.Series[1].ChartType = SeriesChartType.Radar;
            chart1.Series[2].ChartType = SeriesChartType.Radar;
            chart1.Width = 500;
            chart1.Height = 350;

            #endregion

            /* 
                 #VALX      显示当前图例的X轴的对应文本(或数据) 
                 #VAL, #VALY,  显示当前图例的Y轴的对应文本(或数据) 
                 #VALY2, #VALY3, 显示当前图例的辅助Y轴的对应文本(或数据) 
                 #SER:      显示当前图例的名称 
                 #LABEL       显示当前图例的标签文本 
                 #INDEX      显示当前图例的索引 
                 #PERCENT       显示当前图例的所占的百分比 
                 #TOTAL      总数量 
                 #LEGENDTEXT      图例文本 
                 */
        }
    }
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值