إنشاء رسم بياني دائري مع خطوط الريادة
Contents
[
Hide
]
تشرح هذه المقالة كيفية إنشاء رسم بياني دائري مع خطوط القائد من البداية أثناء استخدام واجهة برمجة التطبيقات Aspose.Cells for Java. في Excel، يتم ضبط خيار ‘عرض الخطوط القائدة’ افتراضيًا لذا عند إنشاء رسم بياني دائري في Excel، يتم عرض الخطوط القائدة. ومع ذلك، أثناء إنشاء رسم بياني مماثل باستخدام واجهات برمجة التطبيقات Aspose.Cells، يجب عليك ضبط خاصية Series.HasLeaderLines بشكل صريح.
إنشاء مخطط دائري مع خطوط قيادة
لتوضيح استخدام واجهة برمجة التطبيقات Aspose.Cells for Java لإنشاء رسم بياني دائري مع خطوط القائد، سنقوم أولاً بإنشاء تصنيف جديد وإدخال بيانات تعمل كمصدر بيانات السلسلة. بمجرد وضع البيانات في المكان المناسب، سنضيف تخطيطًا من نوع Pie إلى تجميع الرسوم البيانية ونقوم بضبط جوانبه المختلفة للحصول على رؤية الرسم البياني المرغوبة.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getDataDir(CreatePieChartWithLeaderLines.class); | |
// Create an instance of Workbook in XLSX format | |
Workbook workbook = new Workbook(FileFormatType.XLSX); | |
// Access the first worksheet | |
Worksheet worksheet = workbook.getWorksheets().get(0); | |
// Add two columns of data | |
worksheet.getCells().get("A1").putValue("Retail"); | |
worksheet.getCells().get("A2").putValue("Services"); | |
worksheet.getCells().get("A3").putValue("Info & Communication"); | |
worksheet.getCells().get("A4").putValue("Transport Equip"); | |
worksheet.getCells().get("A5").putValue("Construction"); | |
worksheet.getCells().get("A6").putValue("Other Products"); | |
worksheet.getCells().get("A7").putValue("Wholesale"); | |
worksheet.getCells().get("A8").putValue("Land Transport"); | |
worksheet.getCells().get("A9").putValue("Air Transport"); | |
worksheet.getCells().get("A10").putValue("Electric Appliances"); | |
worksheet.getCells().get("A11").putValue("Securities"); | |
worksheet.getCells().get("A12").putValue("Textiles & Apparel"); | |
worksheet.getCells().get("A13").putValue("Machinery"); | |
worksheet.getCells().get("A14").putValue("Metal Products"); | |
worksheet.getCells().get("A15").putValue("Cash"); | |
worksheet.getCells().get("A16").putValue("Banks"); | |
worksheet.getCells().get("B1").putValue(10.4); | |
worksheet.getCells().get("B2").putValue(5.2); | |
worksheet.getCells().get("B3").putValue(6.4); | |
worksheet.getCells().get("B4").putValue(10.4); | |
worksheet.getCells().get("B5").putValue(7.9); | |
worksheet.getCells().get("B6").putValue(4.1); | |
worksheet.getCells().get("B7").putValue(3.5); | |
worksheet.getCells().get("B8").putValue(5.7); | |
worksheet.getCells().get("B9").putValue(3); | |
worksheet.getCells().get("B10").putValue(14.7); | |
worksheet.getCells().get("B11").putValue(3.6); | |
worksheet.getCells().get("B12").putValue(2.8); | |
worksheet.getCells().get("B13").putValue(7.8); | |
worksheet.getCells().get("B14").putValue(2.4); | |
worksheet.getCells().get("B15").putValue(1.8); | |
worksheet.getCells().get("B16").putValue(10.1); | |
// Create a pie chart and add it to the collection of charts | |
int id = worksheet.getCharts().add(ChartType.PIE, 3, 3, 23, 13); | |
// Access newly created Chart instance | |
Chart chart = worksheet.getCharts().get(id); | |
// Set series data range | |
chart.getNSeries().add("B1:B16", true); | |
// Set category data range | |
chart.getNSeries().setCategoryData("A1:A16"); | |
// Turn off legend | |
chart.setShowLegend(false); | |
// Access data labels | |
DataLabels dataLabels = chart.getNSeries().get(0).getDataLabels(); | |
// Turn on category names | |
dataLabels.setShowCategoryName(true); | |
// Turn on percentage format | |
dataLabels.setShowPercentage(true); | |
// Set position | |
dataLabels.setPosition(LabelPositionType.OUTSIDE_END); | |
// Set separator | |
dataLabels.setSeparator(DataLablesSeparatorType.COMMA); | |
//Turn on leader lines | |
chart.getNSeries().get(0).setHasLeaderLines(true); | |
//Calculate 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.getNSeries().get(0).getPoints().getCount(); i++) | |
{ | |
int X = chart.getNSeries().get(0).getPoints().get(i).getDataLabels().getX(); | |
//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.getNSeries().get(0).getPoints().get(i).getDataLabels().setX(X + DELTA); | |
else | |
chart.getNSeries().get(0).getPoints().get(i).getDataLabels().setX(X - DELTA); | |
} | |
//In order to save the chart image, create an instance of ImageOrPrintOptions | |
ImageOrPrintOptions anOption = new ImageOrPrintOptions(); | |
//Set image format | |
anOption.setImageFormat(ImageFormat.getPng()); | |
//Set resolution | |
anOption.setHorizontalResolution(200); | |
anOption.setVerticalResolution(200); | |
//Render chart to image | |
chart.toImage(dataDir + "output.png", anOption); | |
//Save the workbook to see chart inside the Excel | |
workbook.save(dataDir + "output.xlsx"); | |
رسم بياني دائري الناتج