Генерация круговой диаграммы

1

Я пытаюсь создать piechart из существующего приложения, но я получаю ошибки. Последняя ошибка:

createPieChart (java.lang.String, org.jfree.data.general.PieDataset, org.jfree.chart.labels.PieSectionLabelGenerator) в efa.util.chart.ChartUtil не может применяться к (java.lang.String, org.jfree.data.general.PieDataset) [javac] sectorChart = ChartUtil.createPieChart("", xy); [javac] ^

Помимо этого, мне также нужно добавить третий аргумент в вызове функции, который является PieSectionLabelGenerator labelGenerator. Однако я не знаю, как это сделать. Прочитали docs/api, но все еще не уверены. Что бы вы посоветовали?

Используемый мной код

imports (please see below)
declaration in the code is JFreeChart sectorChart;

the function: 

private void genChart(){
  DefaultPieDataset pieDataset = new DefaultPieDataset();
  pieDataset.setValue("JavaWorld", new Integer(75));
  pieDataset.setValue("Other", new Integer(25));

  PieDataset xy = pieDataset;
  sectorChart = ChartUtil.createPieChart("",xy,);
}

Я не думаю, что с моим импортом что-то не так, и декларация объекта. Пожалуйста, дайте мне знать, если вы хотите их увидеть, я оставляю их для краткости этого сообщения.

Я не могу сделать ответ ниже для моего приложения. Но у меня есть этот фрагмент кода в файле ChartUtil.java

public static JFreeChart createPieChart(final String title,
            final PieDataset dataset, PieSectionLabelGenerator labelGenerator) {

        final JFreeChart chart = ChartFactory.createPieChart(title, dataset,
                false, true, true);

        labelGenerator = labelGenerator != null ? labelGenerator
                : new StandardPieSectionLabelGenerator("{2} {0}",
                        NumberFormat.getNumberInstance(),
                        NumberFormat.getPercentInstance());

        PiePlot plot = (PiePlot) chart.getPlot();
        ChartUtil.formatPiePlot(plot);
        plot.setLabelGenerator(labelGenerator);

        PieRenderer renderer = new PieRenderer();
        renderer.setColor((PiePlot) chart.getPlot(), dataset);

        return chart;

    }

Я считаю, что нам нужно выяснить, как передать PieSectionLabelGenerator в функцию в качестве аргумента...

Теги:
pie-chart
charts
jfreechart

1 ответ

1

Что касается вашего редактирования:

Существует класс, который реализует требуемый интерфейс, StandardPieSectionLabelGenerator, который при передаче в ваш метод должен позволять создавать диаграммы. Альтернативой является создание класса для реализации метода самостоятельно. Я думаю, это зависит от того, чего вы пытаетесь достичь с помощью ярлыков.

public class SO {
public static void main(String[] args){
      DefaultPieDataset pieDataset = new DefaultPieDataset();
      pieDataset.setValue("JavaWorld", new Integer(75));
      pieDataset.setValue("Other", new Integer(25));

      JFreeChart chart = SO.createPieChart("Pie", pieDataset, new StandardPieSectionLabelGenerator());
      JFrame frame = new JFrame("Pie");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.add(new ChartPanel(chart));
      frame.pack();
      RefineryUtilities.centerFrameOnScreen(frame);
      frame.setVisible(true);
}

public static JFreeChart createPieChart(final String title,
        final PieDataset dataset, PieSectionLabelGenerator labelGenerator) {

    final JFreeChart chart = ChartFactory.createPieChart(title, dataset, false, true, true);
    PiePlot plot = (PiePlot) chart.getPlot();
    ChartUtil.formatPiePlot(plot);
    plot.setLabelGenerator(labelGenerator);
    PieRenderer renderer = new PieRenderer();
    renderer.setColor((PiePlot) chart.getPlot(), dataset);
    return chart;
}
}
  • 0
    спасибо за это, не могли бы вы пересмотреть после моего редактирования qn ...
  • 0
    Если вы просто передадите null для labelGenerator, этот код (который не является частью JFreeChart) создаст для вас генератор меток.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню