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控件Bar图
{
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 Bar图
//标题
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坐标轴标题
//cht3.ChartAreas[0].AxisX.Title = "数量(宗)";
//cht3.ChartAreas[0].AxisX.TitleFont = new Font("微软雅黑", 10f, FontStyle.Regular);
//cht3.ChartAreas[0].AxisX.TitleForeColor = Color.White;
//cht3.ChartAreas[0].AxisX.TextOrientation = TextOrientation.Auto;
//cht3.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坐标轴标题
//cht3.ChartAreas[0].AxisY.Title = "数量(宗)";
//cht3.ChartAreas[0].AxisY.TitleFont = new Font("微软雅黑", 10f, FontStyle.Regular);
//cht3.ChartAreas[0].AxisY.TitleForeColor = Color.White;
//cht3.ChartAreas[0].AxisY.TextOrientation = TextOrientation.Auto;
//cht3.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].BackGradientStyle = GradientStyle.None;
//图例样式
Legend legend3 = new Legend("#VALX");
legend3.Title = "图例";
legend3.TitleBackColor = Color.Transparent;
legend3.BackColor = Color.Transparent;
legend3.TitleForeColor = Color.Blue;
legend3.TitleFont = new Font("微软雅黑", 10f, FontStyle.Regular);
legend3.Font = new Font("微软雅黑", 8f, FontStyle.Regular);
legend3.ForeColor = Color.Blue;
chart1.Series[0].XValueType = ChartValueType.String; //设置X轴上的值类型
chart1.Series[0].Label = "#VAL"; //设置显示X Y的值
chart1.Series[0].LabelForeColor = Color.Blue;
chart1.Series[0].ToolTip = "#VALX:#VAL(宗)"; //鼠标移动到对应点显示数值
chart1.Series[0].ChartType = SeriesChartType.Bar; //图类型(折线)
chart1.Series[0].Color = Color.Lime;
//cht3.Series[0].LegendText = legend3.Name;
chart1.Series[0].IsValueShownAsLabel = true;
chart1.Series[0].LabelForeColor = Color.Blue;
chart1.Series[0].CustomProperties = "DrawingStyle = Cylinder";
chart1.Series[0].CustomProperties = "PieLabelStyle = Outside";
//cht3.Legends.Add(legend3);
//cht3.Legends[0].Position.Auto = true;
//是否显示图例
chart1.Series[0].IsVisibleInLegend = true;
chart1.Series[0].ShadowOffset = 0;
//饼图折线
chart1.Series[0]["PieLineColor"] = "Blue";
//绑定数据
chart1.Series[0].Points.DataBindXY(a, b);
//cht3.Series[0].Points[0].Color = Color.White;
//绑定颜色
chart1.Series[0].Palette = ChartColorPalette.BrightPastel;
//for (int n = 0; n < x.Length; n++)
//{
// int ptIdx = cht3.Series[0].Points.AddY(Convert.ToDouble(y[n]));
// DataPoint pt = this.cht3.Series[0].Points[ptIdx];
// pt.LegendText = x[n] + " " + "#PERCENT{P2}" + " [ " + "#VAL{D} 次" + " ]";//右边标签列显示的文字
// pt.Label = x[n] + " " + "#PERCENT{P2}" + " [ " + "#VAL{D} 次" + " ]"; //圆饼外显示的信息
// // pt.LabelToolTip = "#PERCENT{P2}";
// //pt.LabelBorderColor = Color.Red;//文字背景色
//}
#endregion
}
}
}