Создание круговой диаграммы с линиями проводниками
Для демонстрации использования Aspose.Cells for .NET API для создания круговой диаграммы с линиями-проводниками мы сначала создадим новый Workbook и введем некоторые данные, которые послужат источником данных для рядов. После размещения данных мы добавим Chart типа ChartType.Pie в коллекцию диаграмм и установим различные аспекты, чтобы получить нужный вид диаграммы.
// 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"); |
Результирующая круговая диаграмма |
---|
![]() |
Продвинутые темы
- Пользовательские цвета секторов в круговой диаграмме
- Определение того, находятся ли точки данных во втором сегменте или в столбце на круговой из кругов или столбчатой из кругов диаграмме