java - 如何向散点图添加比例尺或 Axis ?

标签 java swing jfreechart axis scatter-plot

我编写了一些代码,将坐标绘制到绘图区域 (JPanel)。这是我的代码类:

class POSCanvas extends JPanel {
    private XYSeries pnts = new XYSeries("Position");

    public POSCanvas() {
        final ChartPanel chartPanel = createDemoPanel();
        this.add(chartPanel, BorderLayout.CENTER);
    }

    private void update(double xnew, double ynew) {
        pnts.add(new XYDataItem(xnew, ynew));
    }

    private ChartPanel createDemoPanel() {
        JFreeChart jfreechart = ChartFactory.createScatterPlot(
            "", "X", "Y", createSampleData(),
            PlotOrientation.VERTICAL, true, true, false);
        XYPlot xyPlot = (XYPlot) jfreechart.getPlot();
        XYItemRenderer renderer = xyPlot.getRenderer();
        NumberAxis domain = (NumberAxis) xyPlot.getDomainAxis();
        int minX = (int)pnts.getMinX(); int maxX = (int)pnts.getMaxX();
        if (minX < maxX){domain.setRange(minX, maxX);}
        domain.setTickUnit(new NumberTickUnit(1));
        NumberAxis range = (NumberAxis) xyPlot.getRangeAxis();
        range.setTickUnit(new NumberTickUnit(1));
        return new ChartPanel(jfreechart){
            @Override
            public Dimension getPreferredSize() {
                return new Dimension(640, 480);
            }
        };
    }

    private XYDataset createSampleData() {
        XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
        xySeriesCollection.addSeries(pnts);
        return xySeriesCollection;
    }
}

问题是我似乎无法添加 X Axis 的范围。这是输出: enter image description here

我正在使用domain.setRange()方法,但它不起作用。知道如何修复它吗?任何帮助,将不胜感激;谢谢。

最佳答案

尝试ChartFactory.createScatterPlot() ,它“使用 XYPlot 实例作为绘图,使用 NumberAxi 作为域 Axis ,使用 NumberAxis 作为范围 Axis ,并使用XYLineAndShapeRenderer 作为渲染器。”显示了几个完整的示例 here ,以及工厂的source包含在发行版中。

image

关于java - 如何向散点图添加比例尺或 Axis ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36279031/

相关文章:

java - Spring 的长耳大野兔观察

java - 如何实现Button ActionListener来让其他类运行cardLayout?

java - 从 Swing 应用程序框架 (JSR 296) 过渡

java - 与jfreechart设置相同长度的ValueAxis

java - 希望通过hibernate hbm xml映射按降序排序

Java OpenGL 将离屏缓冲区绘制到图像

java - 二维字符串数组中基于整数的排序

java - 将 ResultSet 读入 JTable(在不同的类上)

jfreechart - jFreeChart:如何从图例中隐藏项目?

Java JFreeChart - 绘图未更新