关闭

JFreeChart对StackedBar的自定义颜色

标签: jfreechart
505人阅读 评论(0) 收藏 举报
分类:
class ColorRenderer extends  org.jfree.chart.renderer.category.StackedBarRenderer3D{
        private Paint[] colors;
        //初始化柱子颜色
        private String[] colorValues = { "#FFFF32", "#FFCEEB"};

        public ColorRenderer() {
            colors = new Paint[colorValues.length];
            for (int i = 0; i < colorValues.length; i++) {
                colors[i] = Color.decode(colorValues[i]);
            }
            //Label的显示方式,没有Label可以没有
            setDrawBarOutline(false);
            setBaseItemLabelGenerator(new StandardCategoryItemLabelGenerator());
            setBaseItemLabelsVisible(true);
            setBasePositiveItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
            setBaseNegativeItemLabelPosition(new ItemLabelPosition(ItemLabelAnchor.CENTER, TextAnchor.CENTER));
        }
        //每根柱子以初始化的颜色不断轮循
        @Override
        public Paint getSeriesPaint(int series) {
            return colors[series % colors.length];
        }

    }

//调用
CategoryPlot localCategoryPlot = (CategoryPlot) localJFreeChart.getPlot();
            ColorRenderer localBarRenderer = new ColorRenderer();
            localBarRenderer.setBaseToolTipGenerator(
                    new StandardCategoryToolTipGenerator());
            localCategoryPlot.setRenderer(localBarRenderer);

其中核心是复写getSeriesPaint方法,参考了http://www.open-open.com/lib/view/open1366420177406.html,但是其中说的是复写getItemPanit,博主试了发现会存在注释颜色不匹配的问题,于是查看了源码,发现getItemPanit其实调用的就是getSeriesPaint来获取渲染颜色,于是尝试着重写了getSeriesPaint,结果令人振奋颜色不匹配问题圆满解决

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:790次
    • 积分:28
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档