リーダーライン付きの円グラフの作成

リーダーライン付き円グラフを作成するためにAspose.Cells for .NET APIの使用を示すために、まず新しい Workbookを作成し、シリーズデータソースとして機能するデータを入力します。データが整ったら、グラフのコレクションにタイプ ChartType.PieChartを追加し、所望のグラフビューを得るために異なる側面を設定します。

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// The path to the documents directory.
string dataDir = RunExamples.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
// Create an instance of Workbook in XLSX format
Workbook workbook = new Workbook(FileFormatType.Xlsx);
// Access the first worksheet
Worksheet worksheet = workbook.Worksheets[0];
// Add two columns of data
worksheet.Cells["A1"].PutValue("Retail");
worksheet.Cells["A2"].PutValue("Services");
worksheet.Cells["A3"].PutValue("Info & Communication");
worksheet.Cells["A4"].PutValue("Transport Equip");
worksheet.Cells["A5"].PutValue("Construction");
worksheet.Cells["A6"].PutValue("Other Products");
worksheet.Cells["A7"].PutValue("Wholesale");
worksheet.Cells["A8"].PutValue("Land Transport");
worksheet.Cells["A9"].PutValue("Air Transport");
worksheet.Cells["A10"].PutValue("Electric Appliances");
worksheet.Cells["A11"].PutValue("Securities");
worksheet.Cells["A12"].PutValue("Textiles & Apparel");
worksheet.Cells["A13"].PutValue("Machinery");
worksheet.Cells["A14"].PutValue("Metal Products");
worksheet.Cells["A15"].PutValue("Cash");
worksheet.Cells["A16"].PutValue("Banks");
worksheet.Cells["B1"].PutValue(10.4);
worksheet.Cells["B2"].PutValue(5.2);
worksheet.Cells["B3"].PutValue(6.4);
worksheet.Cells["B4"].PutValue(10.4);
worksheet.Cells["B5"].PutValue(7.9);
worksheet.Cells["B6"].PutValue(4.1);
worksheet.Cells["B7"].PutValue(3.5);
worksheet.Cells["B8"].PutValue(5.7);
worksheet.Cells["B9"].PutValue(3);
worksheet.Cells["B10"].PutValue(14.7);
worksheet.Cells["B11"].PutValue(3.6);
worksheet.Cells["B12"].PutValue(2.8);
worksheet.Cells["B13"].PutValue(7.8);
worksheet.Cells["B14"].PutValue(2.4);
worksheet.Cells["B15"].PutValue(1.8);
worksheet.Cells["B16"].PutValue(10.1);
// Create a pie chart and add it to the collection of charts
int id = worksheet.Charts.Add(ChartType.Pie, 3, 3, 23, 13);
// Access newly created Chart instance
Chart chart = worksheet.Charts[id];
// Set series data range
chart.NSeries.Add("B1:B16", true);
// Set category data range
chart.NSeries.CategoryData = "A1:A16";
// Turn off legend
chart.ShowLegend = false;
// Access data labels
DataLabels dataLabels = chart.NSeries[0].DataLabels;
// Turn on category names
dataLabels.ShowCategoryName = true;
// Turn on percentage format
dataLabels.ShowPercentage = true;
// Set position
dataLabels.Position = LabelPositionType.OutsideEnd;
// Set separator
dataLabels.SeparatorType = DataLabelsSeparatorType.Comma;

これまでに円グラフを作成し、異なる側面を設定しました。これからは、チャートのリーダーラインをオンにします。リーダーラインを表示するには、データラベルを少し移動する必要があります。

次のコードは、リーダーラインをオンにし、チャートを更新し、それからデータラベルの位置を計算して適切に移動します。

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Create an instance of Workbook in XLSX format
Workbook workbook = new Workbook(FileFormatType.Xlsx);
// Access the first worksheet
Worksheet worksheet = workbook.Worksheets[0];
// Add two columns of data
worksheet.Cells["A1"].PutValue("Retail");
worksheet.Cells["A2"].PutValue("Services");
worksheet.Cells["A3"].PutValue("Info & Communication");
worksheet.Cells["A4"].PutValue("Transport Equip");
worksheet.Cells["A5"].PutValue("Construction");
worksheet.Cells["A6"].PutValue("Other Products");
worksheet.Cells["A7"].PutValue("Wholesale");
worksheet.Cells["A8"].PutValue("Land Transport");
worksheet.Cells["A9"].PutValue("Air Transport");
worksheet.Cells["A10"].PutValue("Electric Appliances");
worksheet.Cells["A11"].PutValue("Securities");
worksheet.Cells["A12"].PutValue("Textiles & Apparel");
worksheet.Cells["A13"].PutValue("Machinery");
worksheet.Cells["A14"].PutValue("Metal Products");
worksheet.Cells["A15"].PutValue("Cash");
worksheet.Cells["A16"].PutValue("Banks");
worksheet.Cells["B1"].PutValue(10.4);
worksheet.Cells["B2"].PutValue(5.2);
worksheet.Cells["B3"].PutValue(6.4);
worksheet.Cells["B4"].PutValue(10.4);
worksheet.Cells["B5"].PutValue(7.9);
worksheet.Cells["B6"].PutValue(4.1);
worksheet.Cells["B7"].PutValue(3.5);
worksheet.Cells["B8"].PutValue(5.7);
worksheet.Cells["B9"].PutValue(3);
worksheet.Cells["B10"].PutValue(14.7);
worksheet.Cells["B11"].PutValue(3.6);
worksheet.Cells["B12"].PutValue(2.8);
worksheet.Cells["B13"].PutValue(7.8);
worksheet.Cells["B14"].PutValue(2.4);
worksheet.Cells["B15"].PutValue(1.8);
worksheet.Cells["B16"].PutValue(10.1);
// Create a pie chart and add it to the collection of charts
int id = worksheet.Charts.Add(ChartType.Pie, 3, 3, 23, 13);
// Access newly created Chart instance
Chart chart = worksheet.Charts[id];
// Set series data range
chart.NSeries.Add("B1:B16", true);
// Set category data range
chart.NSeries.CategoryData = "A1:A16";
// Turn off legend
chart.ShowLegend = false;
// Access data labels
DataLabels dataLabels = chart.NSeries[0].DataLabels;
// Turn on category names
dataLabels.ShowCategoryName = true;
// Turn on percentage format
dataLabels.ShowPercentage = true;
// Set position
dataLabels.Position = LabelPositionType.OutsideEnd;
// Set separator
dataLabels.SeparatorType = DataLabelsSeparatorType.Comma;
// Turn on leader lines
chart.NSeries[0].HasLeaderLines = true;
// Calculete chart
chart.Calculate();
// You need to move DataLabels a little leftward or rightward depending on their position to show leader lines
int DELTA = 100;
for (int i = 0; i < chart.NSeries[0].Points.Count; i++)
{
int X = chart.NSeries[0].Points[i].DataLabels.X;
// If it is greater than 2000, then move the X position a little right otherwise move the X position a little left
if (X > 2000)
chart.NSeries[0].Points[i].DataLabels.X = X + DELTA;
else
chart.NSeries[0].Points[i].DataLabels.X = X - DELTA;
}

最後に、次のコードでチャートを画像形式で保存し、ワークブックをXLSX形式で保存します。

// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET
// Create an instance of Workbook in XLSX format
Workbook workbook = new Workbook(FileFormatType.Xlsx);
// Access the first worksheet
Worksheet worksheet = workbook.Worksheets[0];
// Add two columns of data
worksheet.Cells["A1"].PutValue("Retail");
worksheet.Cells["A2"].PutValue("Services");
worksheet.Cells["A3"].PutValue("Info & Communication");
worksheet.Cells["A4"].PutValue("Transport Equip");
worksheet.Cells["A5"].PutValue("Construction");
worksheet.Cells["A6"].PutValue("Other Products");
worksheet.Cells["A7"].PutValue("Wholesale");
worksheet.Cells["A8"].PutValue("Land Transport");
worksheet.Cells["A9"].PutValue("Air Transport");
worksheet.Cells["A10"].PutValue("Electric Appliances");
worksheet.Cells["A11"].PutValue("Securities");
worksheet.Cells["A12"].PutValue("Textiles & Apparel");
worksheet.Cells["A13"].PutValue("Machinery");
worksheet.Cells["A14"].PutValue("Metal Products");
worksheet.Cells["A15"].PutValue("Cash");
worksheet.Cells["A16"].PutValue("Banks");
worksheet.Cells["B1"].PutValue(10.4);
worksheet.Cells["B2"].PutValue(5.2);
worksheet.Cells["B3"].PutValue(6.4);
worksheet.Cells["B4"].PutValue(10.4);
worksheet.Cells["B5"].PutValue(7.9);
worksheet.Cells["B6"].PutValue(4.1);
worksheet.Cells["B7"].PutValue(3.5);
worksheet.Cells["B8"].PutValue(5.7);
worksheet.Cells["B9"].PutValue(3);
worksheet.Cells["B10"].PutValue(14.7);
worksheet.Cells["B11"].PutValue(3.6);
worksheet.Cells["B12"].PutValue(2.8);
worksheet.Cells["B13"].PutValue(7.8);
worksheet.Cells["B14"].PutValue(2.4);
worksheet.Cells["B15"].PutValue(1.8);
worksheet.Cells["B16"].PutValue(10.1);
// Create a pie chart and add it to the collection of charts
int id = worksheet.Charts.Add(ChartType.Pie, 3, 3, 23, 13);
// Access newly created Chart instance
Chart chart = worksheet.Charts[id];
// Set series data range
chart.NSeries.Add("B1:B16", true);
// Set category data range
chart.NSeries.CategoryData = "A1:A16";
// Turn off legend
chart.ShowLegend = false;
// Access data labels
DataLabels dataLabels = chart.NSeries[0].DataLabels;
// Turn on category names
dataLabels.ShowCategoryName = true;
// Turn on percentage format
dataLabels.ShowPercentage = true;
// Set position
dataLabels.Position = LabelPositionType.OutsideEnd;
// Set separator
dataLabels.SeparatorType = DataLabelsSeparatorType.Comma;
// In order to save the chart image, create an instance of ImageOrPrintOptions
ImageOrPrintOptions anOption = new ImageOrPrintOptions();
// Set image format
anOption.ImageType = Drawing.ImageType.Png;
// Set resolution
anOption.HorizontalResolution = 200;
anOption.VerticalResolution = 200;
// Render chart to image
chart.ToImage(dataDir + "output_out.png", anOption);
// Save the workbook to see chart inside the Excel
workbook.Save(dataDir + "output_out.xlsx");
作成された円グラフ
todo:image_alt_text

高度なトピック

関連記事