我已经使用MSChart生成图表一段时间了,但我从未在一个图表对象中创建多个图表.对这项任务的思考揭示了我的知识差距.
我如何看待创建图表
对象结构最终看起来像这样
Chart
/ \
ChartArea Series
Run Code Online (Sandbox Code Playgroud)
就我过去所关注的而言,ChartArea就是我设置标签的区域.要添加另一个,我将要添加另一个ChartArea和一个或多个系列.
___________________ Chart ___________________
/ / \ \
ChartArea0 ChartArea1 Series0 Series1
Run Code Online (Sandbox Code Playgroud)
如何将Series0与ChartArea0相关联?将一个系列添加到ChartArea是有意义的,但这是不可能的.为什么将系列与图表相关联而不是ChartArea是有益的?
系列与图表区域相关联
Chart Chart0 = new Chart();
ChartArea ChartArea0 = new ChartArea("name");
Chart0.ChartAreas.Add(ChartArea0);
Series Series0 = new Series();
Chart0.Series.Add(Series0);
// link series to area here
Series0.ChartArea = "name";
Run Code Online (Sandbox Code Playgroud)
小智 5
一个图表可以分为多个区域,其中一个区域可以是条形图,另一个可以是饼图。
System.Windows.Forms.DataVisualization.Charting.Chart chart1 = new System.Windows.Forms.DataVisualization.Charting.Chart();
System.Windows.Forms.DataVisualization.Charting.ChartArea chartarea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
System.Windows.Forms.DataVisualization.Charting.ChartArea chartarea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
chart1.ChartAreas.Clear();
chart1.ChartAreas.Add(chartarea1);
chart1.ChartAreas.Add(chartarea2);
然后你创建一些系列;每个系列将与一个图表区域相关联。如果您创建 5 个系列并将 series1、series2 和 series3 关联到 chartarea1,那么这些系列必须是相同或兼容的图表类型。否则会发生运行时错误。在某些情况下,同一图表区域中的多个系列可能具有不同的 x 轴分量。例如在以下代码中:series1 有 3 个数据点,series2 有 5 个,在这种情况下,chartarea 将显示 series1 的前三个 x 值和 series2 的后两个 x 值。
chart1.Series.Clear();
chart1.Series.Add("Series1");
chart1.Series[0].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column;
chart1.Series[0].ChartArea = chart1.ChartAreas[0].Name;
chart1.Series[0].Points.AddXY("Point1", 20);
chart1.Series[0].Points.AddXY("Point2", 50);
chart1.Series[0].Points.AddXY("Point3",30);
chart1.Series.Add("Series2");
chart1.Series[1].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Column;
chart1.Series[1].ChartArea = chart1.ChartAreas[0].Name;
chart1.Series[1].Points.AddXY("newname1", 10);
chart1.Series[1].Points.AddXY("newname2", 20);
chart1.Series[1].Points.AddXY("newname3", 30);
chart1.Series[1].Points.AddXY("newname4", 40);
chart1.Series[1].Points.AddXY("newname5", 50);
this.tabPage3.Controls.Add(chart1);
chart1.Dock = System.Windows.Forms.DockStyle.Fill;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18435 次 |
| 最近记录: |