【问题标题】:Making a Scatter Plot Using 2d array and JfreeChart使用 2d 数组和 JfreeChart 制作散点图
【发布时间】:2011-07-06 10:12:32
【问题描述】:

这是我使用 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;不允许我通过二维数组,我想问有什么办法可以做到。

【问题讨论】:

    标签: java jfreechart


    【解决方案1】:

    createScatterPlot() 方法需要一个XYDataset,例如XYSeriesCollection。有使用XYSeriesCollectionherehere的例子。

    附录:这是一个更适合散点图的示例;只需在工厂调用中将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;
    }
    

    【讨论】:

    • 感谢您的帮助,确实成功了。还有一个问题,我想如何改变出现在图表上的点的形状,现在它们都出现在正方形中,我想变成圆形、正方形和矩形。
    • DefaultDrawingSupplier 和这个answer。您可以通过单击左侧的空复选标记来接受此答案;有关详细信息,请参阅faq
    猜你喜欢
    • 2020-06-27
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 2012-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多