【发布时间】:2016-06-20 17:42:39
【问题描述】:
我正在尝试并排创建两个共享同一轴的饼图。有没有人有使用 MSChart 完成此操作的代码示例?
到目前为止,这是我的代码:
Chart chart = new Chart();
chart.Width = 800;
string PreContractSeriesName = "PreContract";
string ContractSeriesName = "Contract";
//two chart areas
chart.ChartAreas.Add(PreContractSeriesName);
chart.ChartAreas.Add(ContractSeriesName);
//two pie charts, so two series
chart.Series.Add(PreContractSeriesName);
chart.Series.Add(ContractSeriesName);
//add series to chart area
chart.Series[PreContractSeriesName].ChartArea = PreContractSeriesName;
chart.Series[ContractSeriesName].ChartArea = ContractSeriesName;
//set as pie chart
chart.Series[PreContractSeriesName].ChartType = SeriesChartType.Pie;
chart.Series[ContractSeriesName].ChartType = SeriesChartType.Pie;
chart.ChartAreas[PreContractSeriesName].AlignmentOrientation = AreaAlignmentOrientations.Horizontal;
chart.ChartAreas[ContractSeriesName].AlignmentOrientation = AreaAlignmentOrientations.Horizontal;
chart.Series[PreContractSeriesName].Points.AddXY("source1", 100);
chart.Series[PreContractSeriesName].Points.AddXY("source2", 200);
chart.Series[PreContractSeriesName].Points.AddXY("source3", 300);
chart.Series[PreContractSeriesName].Points.AddXY("source4", 400);
chart.Series[PreContractSeriesName].Points.AddXY("source5", 500);
chart.Series[ContractSeriesName].Points.AddXY("source1", 140);
chart.Series[ContractSeriesName].Points.AddXY("source2", 240);
chart.Series[ContractSeriesName].Points.AddXY("source3", 340);
chart.Series[ContractSeriesName].Points.AddXY("source4", 440);
chart.Series[ContractSeriesName].Points.AddXY("source5", 540);
using (MemoryStream memStream = new MemoryStream())
{
chart.SaveImage(memStream, ChartImageFormat.Jpeg);
return File(memStream.ToArray(), "image/jpeg");
}
我的代码生成以下图表:
我想知道:
- 如何将图表并排对齐?
- 这是共享轴的正确方法吗?
- 有没有人可以举例说明如何做到这一点?
编辑:
感谢用户 TaW,这是我更新的代码
Chart chart = new Chart();
chart.Width = 800;
string PreContractSeriesName = "PreContract";
string ContractSeriesName = "Contract";
//two chart areas
chart.ChartAreas.Add(PreContractSeriesName);
chart.ChartAreas.Add(ContractSeriesName);
//two pie charts, so two series
chart.Series.Add(PreContractSeriesName);
chart.Series.Add(ContractSeriesName);
//add series to chart area
chart.Series[PreContractSeriesName].ChartArea = PreContractSeriesName;
chart.Series[ContractSeriesName].ChartArea = ContractSeriesName;
//position chart areas side by side
chart.ChartAreas[PreContractSeriesName].Position = new ElementPosition(2, 5, 48, 80);
chart.ChartAreas[ContractSeriesName].Position = new ElementPosition(50, 5, 48, 80);
chart.Legends.Add(new Legend() {
Alignment = StringAlignment.Center,
Docking = Docking.Bottom }
);
chart.Series[ContractSeriesName].IsVisibleInLegend = false;
//set as pie chart
chart.Series[PreContractSeriesName].ChartType = SeriesChartType.Pie;
chart.Series[ContractSeriesName].ChartType = SeriesChartType.Pie;
chart.Series[PreContractSeriesName].Points.AddXY("source1", 100);
chart.Series[PreContractSeriesName].Points.AddXY("source2", 200);
chart.Series[PreContractSeriesName].Points.AddXY("source3", 300);
chart.Series[PreContractSeriesName].Points.AddXY("source4", 400);
chart.Series[PreContractSeriesName].Points.AddXY("source5", 500);
chart.Series[ContractSeriesName].Points.AddXY("source1", 140);
chart.Series[ContractSeriesName].Points.AddXY("source2", 240);
chart.Series[ContractSeriesName].Points.AddXY("source3", 340);
chart.Series[ContractSeriesName].Points.AddXY("source4", 440);
chart.Series[ContractSeriesName].Points.AddXY("source5", 540);
【问题讨论】:
-
使用调试器时会发生什么..?也只是发布代码并期望有人通过它没有任何好处..?你能说明你现有代码的问题和/或问题吗
-
@MethodMan,谢谢。我编辑了我的帖子以包含我遇到的结果并提出了更具体的问题。