Получение значения вместо имени на круговой диаграмме в Java - PullRequest
1 голос
/ 21 марта 2011
package charts;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartFrame;
import org.jfree.chart.JFreeChart;
import org.jfree.data.general.DefaultPieDataset;

public class Pie {

    public void DrawChart() {
        DefaultPieDataset pieDataSet = new DefaultPieDataset();

        pieDataSet.setValue("C", new Integer(10));

        pieDataSet.setValue("C++", new Integer(20));

        pieDataSet.setValue("JAVA", new Integer(50));

        pieDataSet.setValue("C#", new Integer(40));

        JFreeChart chart = ChartFactory.createPieChart3D("MY CHART",
            pieDataSet, false, false, true);

        ChartFrame frame = new ChartFrame("Usage Trend", chart);

        frame.setVisible(true);

        frame.setSize(300, 300);

    }

    public static void main(String[] args) {
        Pie pie = new Pie();

        pie.DrawChart();
    }
}

Приведенный выше код сгенерирует круговую диаграмму с фрагментами в виде "C, C ++, Java и C #", но я хочу отобразить значения вместо имени.

Какие модификации я должен сделать?

Ответы [ 2 ]

2 голосов
/ 21 марта 2011

Мне нужна отдельная часть значения вместе с ключом в виде легенды.

Вы можете использовать StandardPieSectionLabelGenerator.

PiePlot plot = (PiePlot) chart.getPlot();
plot.setLegendLabelGenerator(new
    StandardPieSectionLabelGenerator("{0}: {2}"));
2 голосов
/ 21 марта 2011

Что-то вроде

pieDataSet.setValue("50", new Integer(50));

или

pieDataSet.setValue("Java(50)", new Integer(50));

или

pieDataSet.setValue("Java[50]", new Integer(50));

или

pieDataSet.setValue("Java:50", new Integer(50));

Другим способом будет включение всплывающих подсказок с использованием

JFreeChart chart = ChartFactory.createPieChart3D("MY CHART", 
                     pieDataSet, false, true, true);

Подсказки показывают как имя, так и значение.

...