Hi Aspose Team,
Hi Sravanthi,
I did see this link, but could not find a way to change the color of fill in each bar of the Stacked Column chart.
Hi,
public static void AddNewChart(){//Instantiate PresentationEx class that represents PPTX filePresentationEx pres = new PresentationEx();//Access first slideSlideEx sld = pres.getSlides().get_Item(0);// Add chart with default dataChartEx chart = sld.getShapes().addChart(ChartTypeEx.ClusteredColumn, 0, 0, 500, 500);//Setting chart Titlechart.getChartTitle().getText().setText(“Sample Title”);chart.getChartTitle().getText().setCenterText(true);chart.getChartTitle().setHeight(20f);chart.hasTitle(true);//Set first series to Show Valueschart.getChartData().getSeries().get_Item(0).getLabels().setShowValue(true);//Setting the index of chart data sheetint defaultWorksheetIndex = 0;//Getting the chart data worksheetChartDataCellFactory fact = chart.getChartData().getChartDataCellFactory();//Delete default generated series and categorieschart.getChartData().getSeries().clear();chart.getChartData().getCategories().clear();int s = chart.getChartData().getSeries().getCapacity();//Adding new serieschart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 0, 1, “Series 1”), chart.getType());chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 0, 2, “Series 2”), chart.getType());//Adding new categorieschart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 1, 0, “Caetegoty 1”));chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 2, 0, “Caetegoty 2”));chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 3, 0, “Caetegoty 3”));//Take first chart seriesChartSeriesEx series = chart.getChartData().getSeries().get_Item(0);//Now populating series dataseries.getValues().add(fact.getCell(defaultWorksheetIndex, 1, 1, 20));series.getValues().add(fact.getCell(defaultWorksheetIndex, 2, 1, 50));series.getValues().add(fact.getCell(defaultWorksheetIndex, 3, 1, 30));//Setting fill color for seriesseries.getFormat().getFill().setFillType(FillTypeEx.Solid);series.getFormat().getFill().getSolidFillColor().setColor(Color.RED);//Take second chart seriesseries = chart.getChartData().getSeries().get_Item(1);//Now populating series dataseries.getValues().add(fact.getCell(defaultWorksheetIndex, 1, 2, 30));series.getValues().add(fact.getCell(defaultWorksheetIndex, 2, 2, 10));series.getValues().add(fact.getCell(defaultWorksheetIndex, 3, 2, 60));//Setting fill color for seriesseries.getFormat().getFill().setFillType(FillTypeEx.Solid);series.getFormat().getFill().getSolidFillColor().setColor(Color.GREEN);//create custom lables for each of categories for new series//first label will be show Category nameDataLabelEx lbl = new DataLabelEx(series);lbl.setShowCategoryName( true);lbl.setId (0);series.getLabels().add(lbl);//Show series name for second labellbl = new DataLabelEx(series);lbl.setShowSeriesName(true);lbl.setId(1);series.getLabels().add(lbl);//show value for third labellbl = new DataLabelEx(series);lbl.setShowValue(true);lbl.setShowSeriesName(true);lbl.setSeparator("/");lbl.setId( 2);series.getLabels().add(lbl);// show value and custom textlbl = new DataLabelEx(series);lbl.getTextFrame().setText( “My text”);lbl.setId( 3);series.getLabels().add(lbl);// Save presentation with chartpres.write(“C:\Presentations\AsposeChart.pptx”);}
Hi Mudassir,
Many thanks for your reply. Will look forward for an update on changing the color of each Datapoint in a particular series.
I have few more questions which I unable to achieve.
-
Decrease the font size of the data labels.
-
Decrease the font size of a particular data label.
Below is the code I am using. Also attached a zip file having expected and actual PPT.
public static void main(String[] args) {
//Instantiate PresentationEx class that represents PPTX file
PresentationEx pres = new PresentationEx();
//Access first slide
SlideEx slide = pres.getSlides().get_Item(0);
// Add chart with default data
ChartEx chart = slide.getShapes().addChart(ChartTypeEx.StackedColumn, 0, 0, 500, 500);
//Setting chart Title
chart.getChartTitle().getText().setText(“Chart Title”);
chart.getChartTitle().getText().setCenterText(true);
chart.getChartTitle().setHeight(20f);
chart.hasTitle(true);
//Set first series to Show Values
((ChartSeriesEx) chart.getChartData().getSeries().get_Item(0)).getLabels().setShowValue(true);
//Setting the index of chart data sheet
int defaultWorksheetIndex = 0;
//Getting the chart data worksheet
ChartDataCellFactory fact = chart.getChartData().getChartDataCellFactory();
//Delete default generated series and categories
chart.getChartData().getSeries().clear();
chart.getChartData().getCategories().clear();
//Adding new series
chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 0, 1, “CumulativeTotal”), chart.getType());
chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 0, 2, “Decomp”), chart.getType());
//Adding new categories
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 1, 0, “Year Ago”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 2, 0, “Unmodeled Product”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 3, 0, “Seasonality and Holiday”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 4, 0, “Unemployment”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 5, 0, “Cannibalization From Trade”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 6, 0, “Base Price Gap”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 7, 0, “New Product”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 8, 0, “Unexplained”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 9, 0, “Item Distribution”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 10, 0, “Competitive Trade”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 11, 0, “Trend”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 12, 0, “Current”));
//Take first chart series
ChartSeriesEx totalSeries = (ChartSeriesEx) chart.getChartData().getSeries().get_Item(0);
//Now populating series data
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 1, 1, 10000));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 2, 1, 10000));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 3, 1, 11000));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 4, 1, 13000));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 5, 1, 14500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 6, 1, 17500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 7, 1, 17500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 8, 1, 16500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 9, 1, 14500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 10, 1, 10500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 11, 1, 9500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 12, 1, 9000));
//Setting fill color for series
totalSeries.getFormat().getFill().setFillType(FillTypeEx.Solid);
totalSeries.getFormat().getFill().getSolidFillColor().setColor(Color.GRAY);
//Take second chart series
ChartSeriesEx changeSeries = (ChartSeriesEx) chart.getChartData().getSeries().get_Item(1);
//Now populating series data
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 1, 2, null));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 2, 2, 1000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 3, 2, 2000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 4, 2, 1500));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 5, 2, 3000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 6, 2, 0));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 7, 2, 1000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 8, 2, 2000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 9, 2, 4000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 10, 2, 1000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 11, 2, 500));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 12, 2, null));
//Setting fill color for series
changeSeries.getFormat().getFill().setFillType(FillTypeEx.Solid);
changeSeries.getFormat().getFill().getSolidFillColor().setColor(new Color(60, 179, 113));
//Removing the legend
chart.hasLegend(false);
//Show value for start bar
DataLabelEx startDataLabel = new DataLabelEx(totalSeries);
startDataLabel.setId(0);
startDataLabel.setShowValue(true);
/* startDataLabel.getTextFrame().getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat().setFontHeight(8f); // Throwing Null Pointer REFER POINT 2
*/
totalSeries.getLabels().add(startDataLabel);
//Show value for end bar
DataLabelEx endDataLabel = new DataLabelEx(totalSeries);
endDataLabel.setId(11);
endDataLabel.setShowValue(true);
/*
endDataLabel.getTextFrame().getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat().setFontHeight(8f);
*/
//Throwing Null Pointer REFER POINT 2
totalSeries.getLabels().add(endDataLabel);
//Show value for all change bars
changeSeries.getLabels().setShowValue(true);
changeSeries.getLabels().setPosition(LegendDataLabelPositionEx.Center);
/*
changeSeries.getLabels().getTextProperties().getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat().setFontHeight(8f);
*/
//Throwing Null Pointer REFER POINT 1
// Save presentation with chart
int suffix = (int)Math.floor(Math.random()*100);
pres.write(“E:\AsposeChart_” + suffix + “.pptx”);
}
I am using aspose.slides-3.0.0.jar for Java 6.
Hi,
I have observed the expected presentation file shared by you and regret to share that at the moment setting the fill color for individual series point inside series is unavailable in Aspose.Slides. However, you can alter the font related properties of chart series labels. Please use the following sample code to serve the purpose.
public static void testChartLabels()
{
//Instantiate PresentationEx class that represents PPTX file
PresentationEx pres = new PresentationEx();//Access first slide
SlideEx slide = pres.getSlides().get_Item(0);// Add chart with default data
ChartEx chart = slide.getShapes().addChart(ChartTypeEx.StackedColumn, 0, 0, 500, 500);//Setting chart Title
chart.getChartTitle().getText().setText(“Chart Title”);
chart.getChartTitle().getText().setCenterText(true);
chart.getChartTitle().setHeight(20f);
chart.hasTitle(true);//Set first series to Show Values
((ChartSeriesEx) chart.getChartData().getSeries().get_Item(0)).getLabels().setShowValue(true);//Setting the index of chart data sheet
int defaultWorksheetIndex = 0;//Getting the chart data worksheet
ChartDataCellFactory fact = chart.getChartData().getChartDataCellFactory();//Delete default generated series and categories
chart.getChartData().getSeries().clear();
chart.getChartData().getCategories().clear();//Adding new series
chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 0, 1, “CumulativeTotal”), chart.getType());
chart.getChartData().getSeries().add(fact.getCell(defaultWorksheetIndex, 0, 2, “Decomp”), chart.getType());//Adding new categories
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 1, 0, “Year Ago”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 2, 0, “Unmodeled Product”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 3, 0, “Seasonality and Holiday”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 4, 0, “Unemployment”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 5, 0, “Cannibalization From Trade”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 6, 0, “Base Price Gap”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 7, 0, “New Product”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 8, 0, “Unexplained”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 9, 0, “Item Distribution”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 10, 0, “Competitive Trade”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 11, 0, “Trend”));
chart.getChartData().getCategories().add(fact.getCell(defaultWorksheetIndex, 12, 0, “Current”));
//Take first chart series
ChartSeriesEx totalSeries = (ChartSeriesEx) chart.getChartData().getSeries().get_Item(0);//Now populating series data
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 1, 1, 10000));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 2, 1, 10000));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 3, 1, 11000));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 4, 1, 13000));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 5, 1, 14500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 6, 1, 17500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 7, 1, 17500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 8, 1, 16500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 9, 1, 14500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 10, 1, 10500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 11, 1, 9500));
totalSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 12, 1, 9000));//Setting fill color for series
totalSeries.getFormat().getFill().setFillType(FillTypeEx.Solid);
totalSeries.getFormat().getFill().getSolidFillColor().setColor(Color.GRAY);
//Take second chart series
ChartSeriesEx changeSeries = (ChartSeriesEx) chart.getChartData().getSeries().get_Item(1);//Now populating series data
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 1, 2, null));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 2, 2, 1000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 3, 2, 2000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 4, 2, 1500));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 5, 2, 3000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 6, 2, 0));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 7, 2, 1000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 8, 2, 2000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 9, 2, 4000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 10, 2, 1000));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 11, 2, 500));
changeSeries.getValues().add(fact.getCell(defaultWorksheetIndex, 12, 2, null));//Setting fill color for series
changeSeries.getFormat().getFill().setFillType(FillTypeEx.Solid);
changeSeries.getFormat().getFill().getSolidFillColor().setColor(new Color(60, 179, 113));
//Removing the legend
chart.hasLegend(false);
//Show value for start bar
DataLabelEx startDataLabel = new DataLabelEx(totalSeries);
setLabelFont(startDataLabel.getTextProperties(),8.0f, “Arial”);
// setLabelFont(startDataLabel.getTextFrame(),8.0f, “Arial”);startDataLabel.setId(0);
startDataLabel.setShowValue(true);
/*
startDataLabel.getTextFrame().getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat().setFontHeight(8f); //Throwing Null Pointer REFER POINT 2
*/
totalSeries.getLabels().add(startDataLabel);
//Show value for end bar
DataLabelEx endDataLabel = new DataLabelEx(totalSeries);
//setLabelFont(endDataLabel);endDataLabel.setId(11);
endDataLabel.setShowValue(true);setLabelFont(endDataLabel.getTextProperties(),8.0f, “Arial”);
//Throwing Null Pointer REFER POINT 2
totalSeries.getLabels().add(endDataLabel);
//Show value for all change bars
changeSeries.getLabels().setShowValue(true);
changeSeries.getLabels().setPosition(LegendDataLabelPositionEx.Center);
/*
changeSeries.getLabels().getTextProperties().getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat().setFontHeight(8f);
//Throwing Null Pointer REFER POINT 1
*/
int cnt=chart.getChartData().getSeries().size();
setLabelFont(totalSeries.getLabels().getTextProperties(),8.0f, “Arial”);
setLabelFont(changeSeries.getLabels().getTextProperties(),8.0f, “Arial”);// Save presentation with chart
int suffix = (int)Math.floor(Math.random()*100);
pres.write(“D:\Aspose Data\AsposeChart_” + suffix + “.pptx”);
}public static void setLabelFont(TextFrameEx textFrame, float fontHeight,String font)
{PortionFormatEx porFormat =textFrame.getParagraphs().get_Item(0).getParagraphFormat().getDefaultPortionFormat();
porFormat.setFontHeight(fontHeight);
porFormat.setLatinFont(new FontDataEx(font));
}
In the example, I have changed the all labels as well as individual label fonts. Please share, if I may help you further in this regard.
Many Thanks,
Hi Mudassir,
Hi Sravanthi,