JFreeChart柱状图中单组柱子根据不同数据显示不同颜色的方法:首先需要自定义一个Renderer,然后继承BarRenderer类,最后再重写getItemPaint(int i,int j)方法。
我这里需求为分数大于89的显示绿色,大于79的显示橙色,其他的显示红色
第一步创建Renderer类并继承BarRenderer类,重写getItemPaint(int i,int j)方法
import lombok.Data;
import java.awt.*;
import java.util.ArrayList;
/**
* 类描述: 重写BarRenderer类
*
* @author Jack_Liberty
* @version 1.0
* @date 2021-04-01 11:30
*/
@Data
public class CustomRenderer extends org.jfree.chart.renderer.category.BarRenderer {
/**
* 分值
*/
private static final Double EIGHTY_NINE = 89D;
/**
* 分值
*/
private static final Double SEVENTY_NINE = 79D;
/**
* 柱子颜色
*/
private Paint[] colors;
/**
* 柱子分数
*/
private ArrayList<Double> scores;
public CustomRenderer() {
/**
* 初始化柱子颜色
*/
String[] colorValues = {
"#9BBE62", "#F59A23", "#E84614"};
colors = new Paint[colorValues.length];
for (int i = 0; i < colorValues.length; i++) {
colors[i] = Color.decode(colorValues[i]);
}
}
@Override
public Paint getItemPaint(int i, int j) {
Double score = this.scores.get(j);
if (score > EIGHTY_NINE) {
return colors[0];
} else if (score > SEVENTY_NINE) {
return colors[1];
} else {
return colors[2];
}
}
}
第二步、创建一个CategoryDataset对象
/**
* 功能描述: 创建CategoryDataset对象
*
* @return org.jfree.data.category.CategoryDataset
* @author Jack_Liberty
* @date 2021-04-01 16:20
*/
public static CategoryDataset createDataset() {