Как создать круговую диаграмму Sunburst с помощью C++
Возможные сценарии использования
Диаграммы типа Treemap хорошо подходят для сравнения пропорций внутри иерархии, однако такие диаграммы не идеально показывают уровни иерархии между крупнейшими категориями и отдельными данными. Диаграмма Sunburst — гораздо лучший визуальный инструмент для отображения этого. Диаграмма Sunburst идеально подходит для отображения иерархических данных. Каждый уровень иерархии представлен одним кольцом или окружностью, при этом внутреннее кольцо — это вершина иерархии. Диаграмма Sunburst без иерархических данных (один уровень категорий) выглядит похоже на кольцевую диаграмму. Однако диаграмма Sunburst с несколькими уровнями показывает, как внешние кольца связаны с внутренними. Эффективность диаграммы Sunburst в том, что она показывает, как одно кольцо разбивается на составляющие части, в то время как другая иерархическая диаграмма, диаграмма Treemap, лучше подходит для сравнения относительных размеров.
Диаграмма созвездия
После выполнения приведенного ниже кода вы увидите диаграмму созвездия, как показано ниже.
Образец кода
Приведенный ниже образец кода загружает образец файла Excel и генерирует выходной файл Excel.
#include <iostream>
#include "Aspose.Cells.h"
using namespace Aspose::Cells;
int main()
{
Aspose::Cells::Startup();
// Create an instance of Workbook
Workbook workbook(u"sunburst.xlsx");
// Access the first worksheet
Worksheet worksheet = workbook.GetWorksheets().Get(0);
// Add a Treemap chart
int32_t pieIdx = worksheet.GetCharts().Add(ChartType::Sunburst, 5, 6, 25, 12);
// Retrieve the Chart object
Chart chart = worksheet.GetCharts().Get(pieIdx);
// Set the legend can be showed
chart.SetShowLegend(true);
// Set the chart title name
chart.GetTitle().SetText(u"Sunburst Chart");
// Add series data range
chart.GetNSeries().Add(u"D2:D16", true);
// Set category data (A2:A16 is incorrect, as hierarchical category)
chart.GetNSeries().SetCategoryData(u"A2:C16");
// Show the DataLabels with category names
chart.GetNSeries().Get(0).GetDataLabels().SetShowCategoryName(true);
// Fill the PlotArea area with nothing
chart.GetPlotArea().GetArea().GetFillFormat().SetFillType(FillType::None);
// Save the Excel file
workbook.Save(u"out.xlsx");
std::cout << "Excel file saved successfully!" << std::endl;
Aspose::Cells::Cleanup();
}