[quote=entanglement][code]
package guj;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Arc2D;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JPanel;
public class GraficoNivel extends JPanel {
public static class Valor {
    private double valor;
    private String legenda;
    public Valor (double valor, String legenda) {
        this.valor = valor; this.legenda = legenda;
    }
    public double getValor() {
        return valor;
    }
    public void setValor(double valor) {
        this.valor = valor;
    }
    public String getLegenda() {
        return legenda;
    }
    public void setLegenda(String legenda) {
        this.legenda = legenda;
    }
};
public GraficoNivel() {
    super();
}
private List<Valor> valores = new ArrayList<Valor>();
public void add (Valor valor) {
    valores.add (valor);
    System.out.println (valores);
}
public void clear() {
    valores.clear();
}
public void setDivisoes (int nDivisoes) {
    this.nDivisoes = nDivisoes;
}
private void normalize (Graphics2D g2d, Dimension dim) {
    g2d.translate(dim.width / 2, dim.height / 2);
    g2d.scale((dim.width - 2) / 2, -(dim.height - 2) / 2);
}
@Override
protected void paintComponent(Graphics g) {
    Graphics2D g2d = (Graphics2D) g.create();
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
    // Devemos a princípio determinar as dimensões, de forma que possamos normalizar
    // para um sistema de coordenadas com -1 <= x <= +1 e -1 <= y <= +1, e com o 
    // eixo dos x apontando para cima, não para baixo.
    normalize (g2d, getSize());
    g2d.setStroke(new BasicStroke(0.01f));
    // Vamos desenhar as fatias, de acordo om seus respectivos raios
    for (int i = 1; i <= valores.size(); ++i) {
        double radius = valores.get(i-1).getValor();
        double angle = 360 / valores.size();
        g2d.setPaint (new Color ((int) (255 * i / valores.size()), (int) (255 * i / valores.size()), (int) (255 * i / valores.size())));
        System.out.println (radius);
        Arc2D.Double d = new Arc2D.Double (-radius, -radius, 2 * radius, 2 * radius, 270- (int) (angle * (i-1)), (int) angle, Arc2D.PIE);
        g2d.fill (d);
    }
    g2d.setPaint(Color.BLACK);
    // Vamos desenhar agora os raios (um para cada Valor)
    System.out.println (valores.size());
    for (int i = 0; i < valores.size(); ++i) {
        double theta = 2 * Math.PI * i / valores.size();
        g2d.draw (new Line2D.Double(0, 0, Math.sin(theta), Math.cos(theta)));
    }
    // Agora, vamos desenhar a quantidade de subdivisões
    for (int i = 1; i <= nDivisoes; ++i) {
        double radius = i * 1.0 / nDivisoes;
        Ellipse2D.Double d = new Ellipse2D.Double(-radius, -radius, 2*radius, 2*radius); 
        g2d.draw(d);
    }
    g2d.dispose();
}
private int nDivisoes = 3;
}
[/code]
Exemplo de uso.
[code]
package guj;
import java.awt.BorderLayout;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
public class ExemploGraficoNivel extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel jContentPane = null;
private GraficoNivel grfNivel = null;
private GraficoNivel getGrfNivel() {
    if (grfNivel == null) {
        grfNivel = new GraficoNivel();
        grfNivel.setDivisoes(5);
        grfNivel.add (new GraficoNivel.Valor(0.5, "meio"));
        grfNivel.add (new GraficoNivel.Valor(0.7, "meio"));
        grfNivel.add (new GraficoNivel.Valor(0.9, "meio"));
        grfNivel.add (new GraficoNivel.Valor(1.2, "meio"));
        grfNivel.add (new GraficoNivel.Valor(0.6, "meio"));
    }
    return grfNivel;
}
public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            ExemploGraficoNivel thisClass = new ExemploGraficoNivel();
            thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            thisClass.setVisible(true);
        }
    });
}
public ExemploGraficoNivel() {
    super();
    initialize();
}
private void initialize() {
    this.setSize(300, 300);
    this.setContentPane(getJContentPane());
    this.setTitle("Teste Gráfico Nível");
}
private JPanel getJContentPane() {
    if (jContentPane == null) {
        jContentPane = new JPanel();
        jContentPane.setLayout(new BorderLayout());
        jContentPane.add(getGrfNivel(), BorderLayout.CENTER);
    }
    return jContentPane;
}
}
[/code][/quote]
Muito obrigado a todos, principalmente ao amigo entanglement!!