在Java中的饼图上获取值而不是名称

时间:2011-03-21 07:50:16

标签: java jfreechart

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 个答案:

答案 0 :(得分:2)

这样的东西
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);

工具提示显示名称和值。

答案 1 :(得分:2)

  

我希望价值部分分开,沿着关键字作为传奇。

您可以使用StandardPieSectionLabelGenerator

PiePlot plot = (PiePlot) chart.getPlot();
plot.setLegendLabelGenerator(new
    StandardPieSectionLabelGenerator("{0}: {2}"));