使用2d数组和JfreeChart制作散点图

3

这是我学习Java的第一个月,对于我的愚蠢问题,我提前道歉。我正在尝试使用Jfreechart制作一个简单的程序。我想在散点图上显示我的二维数组。

这里是代码:


package myappthatusesjfreechart;

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

public class MyAppThatUsesJFreeChart {

    public static void main(String[] args) {
        // create a dataset...
        int[][] a2 = new int[10][5];

        // print array in rectangular form
        for (int r = 0; r < a2.length; r++) {
            for (int c = 0; c < a2[r].length; c++) {
                System.out.print(" " + a2[r][c]);
            }
            System.out.println("");
        }

        // create a chart...
        JFreeChart chart = ChartFactory.createScatterPlot(
            "Scatter Plot", // chart title
            "X", // x axis label
            "Y", // y axis label
            a2, // data  ***-----PROBLEM------***
            PlotOrientation.VERTICAL,
            true, // include legend
            true, // tooltips
            false // urls
            );

        // create and display a frame...
        ChartFrame frame = new ChartFrame("First", chart);
        frame.pack();
        frame.setVisible(true);
    }
}

;ChartFactory.createScatterPlot; 不允许我传递二维数组,我想问是否有任何方法可以做到这一点。

1个回答

11
createScatterPlot() 方法期望接收一个 XYDataset 类型的参数,如 XYSeriesCollection。下面是使用 XYSeriesCollection 的例子:这里这里
补充一下:这里有一个更适合散点图的例子,只需在工厂调用中将 a2 替换为 createDataset() 即可。
private static final Random r = new Random();

private static XYDataset createDataset() {
    XYSeriesCollection result = new XYSeriesCollection();
    XYSeries series = new XYSeries("Random");
    for (int i = 0; i <= 100; i++) {
        double x = r.nextDouble();
        double y = r.nextDouble();
        series.add(x, y);
    }
    result.addSeries(series);
    return result;
}

谢谢你的帮助,真的很有效。还有一个问题,我该如何改变图表上出现的点的形状,现在它们都是正方形,我想让它们变成圆形、正方形和矩形。 - Zeeshan
请参考DefaultDrawingSupplier和这个答案。您可以点击左边的空白复选框来接受此答案;有关详细信息,请参见[faq]。 - trashgod

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接