1

jfree Chart を使用して、位置決め用のポイントをいくつか描画しています。

問題は、図がフロア プランではなく灰色の面に描かれていることです。そのため、背景画像を使用しようとしましたが、これにより画像が背景に配置され、必要になるため使用できません。

灰色の背景を画像に置き換えたいと思います。これどうやってするの?

ChartPanel を使用してグラフを描画します。問題は、これが背景として色のみを許可し、画像を許可しないことです。以下のコードに見られるように、チャートに画像を設定しようとしましたが、これは背景画像のみを設定し、灰色の領域の前景にチャートを描画します。

JFreeChart chart = ChartFactory.createScatterPlot("XY Chart", // Title
                "x-axis", // x-axis Label
                "y-axis", // y-axis Label
                dataset, // Dataset
                PlotOrientation.VERTICAL, // Plot Orientation
                false, // Show Legend
                false, // Use tooltips
                false // Configure chart to generate URLs?
                );    
BufferedImage image = null;
        try {
            File url = new File(System.getProperty("user.dir").toString()+"\\1.jpg");
            image = ImageIO.read(url);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        chart.setBackgroundImage(image);
4

1 に答える 1

0

jfreechart-1.0.19で試しました。灰色の背景を避けたい場合は、グラフ領域の透明度を変更すると役立ちます (行に注意してchart.getPlot().setBackgroundAlpha(0);ください):

public class MyChart extends ApplicationFrame {
    public MyChart() throws Exception {
        super("My Chart");

        final XYSeries series1 = new XYSeries("First");
        series1.add(1.0, 1.0);
        series1.add(2.0, 4.0);
        series1.add(3.0, 3.0);

        final XYSeriesCollection dataset = new XYSeriesCollection();
        dataset.addSeries(series1);

        JFreeChart chart = ChartFactory.createScatterPlot("XY Chart", // Title
                "x-axis", // x-axis Label
                "y-axis", // y-axis Label
                dataset, // Dataset
                PlotOrientation.VERTICAL, // Plot Orientation
                false, // Show Legend
                false, // Use tooltips
                false // Configure chart to generate URLs?
        );
        BufferedImage image = null;
        File url = new File("/home/me/Pictures/test.png");
        image = ImageIO.read(url);
        chart.setBackgroundImage(image);
        chart.getPlot().setBackgroundAlpha(0);

        final ChartPanel chartPanel = new ChartPanel(chart);
        chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
        setContentPane(chartPanel);
    }

    public static void main(String args[]) throws Exception {
        final MyChart myChart = new MyChart();
        myChart.pack();
        RefineryUtilities.centerFrameOnScreen(myChart);
        myChart.setVisible(true);
    }
}

このトリックの助けを借りて、私は持っています:

スクリーンショット

于 2015-11-10T11:19:41.263 に答える