4

グラフを生成するために、JFreeChart の SpiderWebPlot を使用しています。しかし、私が欲しいのは、値を含むツールチップです。StandardCategoryTooltipGenerator をプロットに設定する必要があることがわかりましたが、それは重要ではないようです。ここに私のサンプルコードがあります:

private JFreeChart prepareChart() {
    Random rnd = new java.util.Random();
    DefaultCategoryDataset dataSet = new DefaultCategoryDataset();
    String rowKey = "Osobnik";
    dataSet.addValue(rnd.nextInt(20), rowKey, "BLUFF");
    dataSet.addValue(rnd.nextInt(20), rowKey, "CALL");
    dataSet.addValue(rnd.nextInt(20), rowKey, "CHECK");
    dataSet.addValue(rnd.nextInt(20), rowKey, "FOLD");
    dataSet.addValue(rnd.nextInt(20), rowKey, "RAISE");

    SpiderWebPlot plot = new SpiderWebPlot(dataSet);
    // CategoryToolTipGenerator generator = new
    // StandardCategoryToolTipGenerator();
    // generator.generateToolTip(dataSet, 0, 1);
    plot.setToolTipGenerator(new StandardCategoryToolTipGenerator());
    plot.setStartAngle(54D);
    plot.setInteriorGap(0.40000000000000002D);
    plot.setToolTipGenerator(new StandardCategoryToolTipGenerator());
    JFreeChart chart = new JFreeChart(plot);

    return chart;
}

これが私が達成しようとしていることの例です。 ここに画像の説明を入力 ここに画像の説明を入力

4

1 に答える 1

3

ChartPanel「チャートに登録して、チャートの任意のコンポーネントへの変更の通知を受け取ります。」ChartPanel私はあなたが;を構築することを怠ったのではないかと思います。のstaticバージョンを指定するprepareChart()と、次のようにmain()機能します。初期スレッドも参照してください。

public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {

        @Override
        public void run() {
            JFrame f = new JFrame("Spider Web Plot");
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.add(new ChartPanel(prepareChart()));
            f.pack();
            f.setLocationRelativeTo(null);
            f.setVisible(true);
        }
    });
}

補遺:投稿されたスクリーンショットに基づいて、カスタムが必要になります。CategoryItemLabelGeneratorこれは、を使用して設定できますsetLabelGenerator()ここdrawLabel()に示すように、から呼び出されます。例えば、

plot.setLabelGenerator(new StandardCategoryItemLabelGenerator() {

    @Override
    public String generateColumnLabel(CategoryDataset dataset, int col) {
        return dataset.getColumnKey(col) + " " + dataset.getValue(0, col);
    }
});
于 2013-01-02T19:47:23.427 に答える