How to set colors for dynamic series in a Sunburst chart?

24 Jun 20268 minutes to read

The following code shows how to assign custom colors to each data point in a Sunburst chart with Syncfusion XlsIO.

using (ExcelEngine excelEngine = new ExcelEngine()) { IApplication application = excelEngine.Excel; application.DefaultVersion = ExcelVersion.Xlsx; IWorkbook workbook = application.Workbooks.Open("../../../Data/Input.xlsx"); IWorksheet worksheet = workbook.Worksheets[0]; //Initialize chart IChartShape chart = worksheet.Charts.Add(); chart.ChartType = ExcelChartType.SunBurst; //Assign data chart.DataRange = worksheet["A1:B13"]; chart.IsSeriesInRows = false; //Apply chart elements //Set Chart Title chart.ChartTitle = "Transfer Summary"; //Set Data labels IChartSerie series = chart.Series[0]; series.DataPoints.DefaultDataPoint.DataLabels.IsCategoryName = false; series.DataPoints.DefaultDataPoint.DataLabels.IsValue = true; Color[] series_color = new Color[12]; series_color[0] = Color.FromArgb(253, 182, 33); series_color[1] = Color.FromArgb(18, 151, 243); series_color[2] = Color.FromArgb(38, 7, 142); series_color[3] = Color.FromArgb(5, 60, 122); series_color[4] = Color.FromArgb(180, 70, 243); series_color[5] = Color.FromArgb(53, 12, 133); series_color[6] = Color.FromArgb(108, 11, 23); series_color[7] = Color.FromArgb(200, 70, 112); series_color[8] = Color.FromArgb(125, 200, 12); series_color[9] = Color.FromArgb(10, 150, 43); series_color[10] = Color.FromArgb(150, 82, 133); series_color[11] = Color.FromArgb(98, 15, 103); for (int i = 0; i < (series as ChartSerieImpl).PointNumber; i++) { series.DataPoints[i].DataFormat.AreaProperties.ForegroundColor = series_color[i]; } //Set Legend chart.HasLegend = true; //Positioning the chart in the worksheet chart.TopRow = 8; chart.LeftColumn = 1; chart.BottomRow = 23; chart.RightColumn = 8; //Saving the workbook workbook.SaveAs("../../../Output/SunBurst.xlsx"); }
using (ExcelEngine excelEngine = new ExcelEngine())
{
    IApplication application = excelEngine.Excel;
    application.DefaultVersion = ExcelVersion.Xlsx;
    IWorkbook workbook = application.Workbooks.Open("../../Data/Input.xlsx");
    IWorksheet worksheet = workbook.Worksheets[0];

    //Initialize chart
    IChartShape chart = worksheet.Charts.Add();
    chart.ChartType = ExcelChartType.SunBurst;

    //Assign data
    chart.DataRange = worksheet["A1:B13"];
    chart.IsSeriesInRows = false;

    //Apply chart elements
    //Set Chart Title
    chart.ChartTitle = "Transfer Summary";

    //Set Data labels
    IChartSerie series = chart.Series[0];
    series.DataPoints.DefaultDataPoint.DataLabels.IsCategoryName = false;
    series.DataPoints.DefaultDataPoint.DataLabels.IsValue = true;

    Color[] series_color = new Color[12];
    series_color[0] = Color.FromArgb(253, 182, 33);
    series_color[1] = Color.FromArgb(18, 151, 243);
    series_color[2] = Color.FromArgb(38, 7, 142);
    series_color[3] = Color.FromArgb(5, 60, 122);
    series_color[4] = Color.FromArgb(180, 70, 243);
    series_color[5] = Color.FromArgb(53, 12, 133);
    series_color[6] = Color.FromArgb(108, 11, 23);
    series_color[7] = Color.FromArgb(200, 70, 112);
    series_color[8] = Color.FromArgb(125, 200, 12);
    series_color[9] = Color.FromArgb(10, 150, 43);
    series_color[10] = Color.FromArgb(150, 82, 133);
    series_color[11] = Color.FromArgb(98, 15, 103);

    for (int i = 0; i < (series as ChartSerieImpl).PointNumber; i++)
    {
        series.DataPoints[i].DataFormat.AreaProperties.ForegroundColor = series_color[i];
    }

    //Set Legend
    chart.HasLegend = true;

    //Positioning the chart in the worksheet
    chart.TopRow = 8;
    chart.LeftColumn = 1;
    chart.BottomRow = 23;
    chart.RightColumn = 8;

    //Saving the workbook
    workbook.SaveAs("../../Output/SunBurst.xlsx");
}
Using excelEngine As New ExcelEngine()
     Dim application As IApplication = excelEngine.Excel
     application.DefaultVersion = ExcelVersion.Xlsx

     Dim workbook As IWorkbook = application.Workbooks.Open("../../Data/Input.xlsx")
     Dim worksheet As IWorksheet = workbook.Worksheets(0)

     'Initialize chart
     Dim chart As IChartShape = worksheet.Charts.Add()
     chart.ChartType = ExcelChartType.SunBurst

     'Assign data
     chart.DataRange = worksheet("A1:B13")
     chart.IsSeriesInRows = False

     'Apply chart elements
     'Set Chart Title
     chart.ChartTitle = "Transfer Summary"

     'Set Data labels
     Dim series As IChartSerie = chart.Series(0)
     series.DataPoints.DefaultDataPoint.DataLabels.IsCategoryName = False
     series.DataPoints.DefaultDataPoint.DataLabels.IsValue = True

     Dim series_color(11) As Color
     series_color(0) = Color.FromArgb(253, 182, 33)
     series_color(1) = Color.FromArgb(18, 151, 243)
     series_color(2) = Color.FromArgb(38, 7, 142)
     series_color(3) = Color.FromArgb(5, 60, 122)
     series_color(4) = Color.FromArgb(180, 70, 243)
     series_color(5) = Color.FromArgb(53, 12, 133)
     series_color(6) = Color.FromArgb(108, 11, 23)
     series_color(7) = Color.FromArgb(200, 70, 112)
     series_color(8) = Color.FromArgb(125, 200, 12)
     series_color(9) = Color.FromArgb(10, 150, 43)
     series_color(10) = Color.FromArgb(150, 82, 133)
     series_color(11) = Color.FromArgb(98, 15, 103)

     For i As Integer = 0 To CType(series, ChartSerieImpl).PointNumber - 1
         series.DataPoints(i).DataFormat.AreaProperties.ForegroundColor = series_color(i)
     Next

     'Set Legend
     chart.HasLegend = True

     'Positioning the chart in the worksheet
     chart.TopRow = 8
     chart.LeftColumn = 1
     chart.BottomRow = 23
     chart.RightColumn = 8

     'Saving the workbook
     workbook.SaveAs("../../Output/SunBurst.xlsx")
 End Using