Here is how i fixed this problem: in ChartLabelCustomizer I add a ChangeListener to piePlot to listen for DATASET_UPDATED events and set section colors based on the value of dataset keys. see the attached code for more details Code: colorMap.put("KEY-1", Color.decode("#ff6666")); colorMap.put("KEY-2", Color.decode("#6666ff")); colorMap.put("KEY-3", Color.decode("#66ff66")); final PieDataset dataset = piePlot.getDataset(); piePlot.addChangeListener(new PlotChangeListener() { public void plotChanged(PlotChangeEvent event) { if(event.getType() == ChartChangeEventType.DATASET_UPDATED) { //Assign color to each section of pie chart based on value of key for (int i = 0; i < dataset.getItemCount(); i++) { setSectionColor(piePlot, dataset.getKey(i), "KEY-1"); setSectionColor(piePlot, dataset.getKey(i), "KEY-2"); setSectionColor(piePlot, dataset.getKey(i), "KEY-3"); } } } }); private void setSectionColor(PiePlot piePlot, Comparable key, String parterName) { if(key.toString().toLowerCase().contains(parterName)) { piePlot.setSectionPaint(key, colorMap.get(parterName)); } }