我已经下载了MS图表示例,在图库中它显示了一个“3DPieInPie.png”,这是我想要的-但看不到任何代码来创建它!!
假设它是ChartType = SeriesChartType.Pie...但是否有其他设置指定我要第二个饼图?以及如何输入第二组数据?-我尝试添加新系列,但似乎被忽略。
ChartType = SeriesChartType.Pie
2uluyalo1#
这种类型的图表称为嵌套饼图或多级饼图。它是通过创建两个ChartArea -饼图和圆环图来完成的,这两个图表相对于另一个正确放置。下面是代码。
public partial class Form1 : Form { public class DataInt { public string Label { get; set; } public int Value { get; set; } } public Form1() { InitializeComponent(); pieChart.Series.Clear(); pieChart.Legends.Clear(); float baseDoughnutWidth = 25; float outerSize = 80; ChartArea outerArea = new ChartArea("OUTER_AREA"); outerArea.Position = new ElementPosition(0, 10, 100, 100); outerArea.InnerPlotPosition = new ElementPosition((100 - outerSize) / 2, (100 - outerSize) / 2, outerSize, outerSize); outerArea.BackColor = Color.Transparent; pieChart.ChartAreas.Add(outerArea); float innerSize = 53; ChartArea innerArea = new ChartArea("INNER_AREA"); innerArea.Position = new ElementPosition(0, 5, 100, 100); ElementPosition innerPos = new ElementPosition((100 - innerSize) / 2, ((100 - innerSize) / 2), innerSize, innerSize+5); innerArea.InnerPlotPosition = innerPos; innerArea.BackColor = Color.Transparent; pieChart.ChartAreas.Add(innerArea); Series outerSeries = new Series("OUTER_SERIES"); outerSeries.ChartArea = "OUTER_AREA"; outerSeries.ChartType = SeriesChartType.Doughnut; outerSeries["DoughnutRadius"] = Math.Min(baseDoughnutWidth * (100 / outerSize), 99).ToString().Replace(",", "."); Series innerSeries = new Series("INNER_SERIES"); innerSeries.ChartArea = "INNER_AREA"; innerSeries.ChartType = SeriesChartType.Pie; var innerData = new List<DataInt> { new DataInt { Label = "A", Value = 7 }, new DataInt { Label = "B", Value = 14 }, new DataInt{Label="C",Value=19}, new DataInt{Label="D",Value=12}, new DataInt{Label="E",Value=20}, new DataInt{Label="F",Value=28} }; var outerData = new List<DataInt> { new DataInt { Label = "Gold", Value = 21 }, new DataInt{Label="Red",Value=31}, new DataInt { Label = "Blue", Value = 48 } }; innerSeries.Points.DataBindXY(innerData, "Label", innerData, "Value"); outerSeries.Points.DataBindXY(outerData, "Label", outerData, "Value"); pieChart.Series.Add(innerSeries); pieChart.Series.Add(outerSeries); Legend legend = new Legend("pieChartLegend") { Font=new System.Drawing.Font("Arial",14.0f), Alignment = StringAlignment.Center, Docking = Docking.Top, Enabled = true, IsDockedInsideChartArea = false, TableStyle = LegendTableStyle.Wide, }; pieChart.Legends.Add(legend); foreach (Series sr in pieChart.Series) { sr.Legend = "pieChartLegend"; } var outerAreaColors = new List<Color>(){Color.Gold,Color.Red, Color.DeepSkyBlue }; var innerAreaColors = new List<Color>() {Color.Goldenrod,Color.DarkGoldenrod, Color.DarkRed, Color.Firebrick,Color.DodgerBlue, Color.SteelBlue }; for (int i = 0; i < outerSeries.Points.Count; i++) { outerSeries.Points[i].Color = outerAreaColors[i]; } for (int i = 0; i < innerSeries.Points.Count; i++) { innerSeries.Points[i].Color = ChartColorPallets.Inner[i]; } int inclination = 20; int rotation = 45; bool enable3d = true; pieChart.ChartAreas["OUTER_AREA"].Area3DStyle.Enable3D = enable3d; pieChart.ChartAreas["OUTER_AREA"].Area3DStyle.Inclination = inclination; pieChart.ChartAreas["OUTER_AREA"].Area3DStyle.Rotation = rotation; pieChart.ChartAreas["INNER_AREA"].Area3DStyle.Enable3D = enable3d; pieChart.ChartAreas["INNER_AREA"].Area3DStyle.Inclination = inclination; pieChart.ChartAreas["INNER_AREA"].Area3DStyle.Rotation = rotation; } }
tv6aics12#
查看这些答案。它们还包括一些示例代码:http://social.msdn.microsoft.com/Forums/en-US/MSWinWebChart/thread/54b4dbb7-1622-4798-8b6a-ef4f01e48c31/http://support2.dundas.com/default.aspx?article=1115http://support2.dundas.com/Default.aspx?article=1114
2条答案
按热度按时间2uluyalo1#
这种类型的图表称为嵌套饼图或多级饼图。它是通过创建两个ChartArea -饼图和圆环图来完成的,这两个图表相对于另一个正确放置。下面是代码。
tv6aics12#
查看这些答案。它们还包括一些示例代码:
http://social.msdn.microsoft.com/Forums/en-US/MSWinWebChart/thread/54b4dbb7-1622-4798-8b6a-ef4f01e48c31/
http://support2.dundas.com/default.aspx?article=1115
http://support2.dundas.com/Default.aspx?article=1114