如何将颜色应用于单个系列图的单个条形图? [英] How do I apply a color to a single bar of my single series graph?

查看:159
本文介绍了如何将颜色应用于单个系列图的单个条形图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是JFreeChart的新手,我正在尝试看看有什么动作。

I am new to JFreeChart and I am trying to see what action do what.

在我的图表中我只有一个系列,我想 - 根据值 - 为条形设置不同的颜色。例如: 0-20 - > RED,20-80 - >黄色,80-100 - >绿色

In my chart I only have one series, and I would like -according to the value- to set a different color for the bar. For example : 0-20 -> RED, 20-80 -> YELLOW, 80-100 -> GREEN

CategoryPlot plot = chart.getCategoryPlot();
CategoryDataset dataset = plot.getDataset(0);

Number value = dataset.getValue(dataset.getRowKey(0), dataset.getColumnKey(0));
Double val = value.doubleValue();

if (val <= 20.0) {
    BarRenderer renderer = (BarRenderer) plot.getRenderer();
    Paint tmp = renderer.getItemPaint(row, column);

    /*
    ** Help Please
    */      
}

return chart;

这是我到达的地方,我被困在这里,不知道到底要去哪里。我在文档中看到Paint是一个接口,但实现此接口的类都没有提供setXXX()方法。所以,我的两个问题是:

This is where I reached, I am stuck here and don't know really where to go. I saw in the documentation that Paint is an interface but none of the class implementing this interface does provide a setXXX() method. So, my two questions are :


  • 如何将颜色设置为单个条形图?

  • 如何将其应用于我的图表?

推荐答案

您需要创建自己的 BarRenderer 的子类并覆盖 getItemPaint() 。而不是根据列选择颜色,而是根据您的值选择它。这是一个大纲,显示现有的 BarRenderer 是如何工作的。

You'll need to create your own subclass of BarRenderer and override getItemPaint(). Instead of choosing a color based on column, choose it based on your value. Here's an outline to show how the existing BarRenderer works.

plot.setRenderer(new MyRender());
...
class MyRender extends BarRenderer {

    @Override
    public Paint getItemPaint(int row, int col) {
        System.out.println(row + " " + col + " " + super.getItemPaint(row, col));
        return super.getItemPaint(row, col);
    }
}

这篇关于如何将颜色应用于单个系列图的单个条形图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆