Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java X、Y轴的设置范围_Java_Jfreechart - Fatal编程技术网

Java X、Y轴的设置范围

Java X、Y轴的设置范围,java,jfreechart,Java,Jfreechart,关于如何设置X轴和Y轴范围的任何建议 我的“X轴”范围为“0.00到1.00”,差值为“0.05”。我的意思是0.00 0.05 0.10 0.15…0.90 0.95 1.00 我的“Y轴”范围为“0.0到1.0”,差值为“0.1”。我的意思是0.0.1 0.2 0.3 0.4………0.9 1.0 我试着这样做,但它没有反映在图表上;我不知道如何将其应用于ChartFactory.createScatterPlot() 任何关于这方面的帮助都会很好。我猜你的新NumberAxis实例没有被绘图

关于如何设置X轴和Y轴范围的任何建议

我的“X轴”范围为“0.00到1.00”,差值为“0.05”。我的意思是0.00 0.05 0.10 0.15…0.90 0.95 1.00

我的“Y轴”范围为“0.0到1.0”,差值为“0.1”。我的意思是0.0.1 0.2 0.3 0.4………0.9 1.0

我试着这样做,但它没有反映在图表上;我不知道如何将其应用于
ChartFactory.createScatterPlot()


任何关于这方面的帮助都会很好。

我猜你的新
NumberAxis
实例没有被绘图使用;使用工厂现有的可能更容易

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.util.*;
import javax.swing.AbstractAction;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.jfree.chart.*;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.axis.NumberTickUnit;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.plot.XYPlot;
import org.jfree.chart.renderer.xy.XYItemRenderer;
import org.jfree.data.xy.XYDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;

/**
 * @see http://stackoverflow.com/questions/7231824
 * @see http://stackoverflow.com/questions/7205742
 * @see http://stackoverflow.com/questions/7208657
 * @see http://stackoverflow.com/questions/7071057
 */
public class ScatterAdd extends JFrame {

    private static final int N = 8;
    private static final String title = "Scatter Add Demo";
    private static final Random rand = new Random();
    private XYSeries added = new XYSeries("Added");

    public ScatterAdd(String s) {
        super(s);
        final ChartPanel chartPanel = createDemoPanel();
        this.add(chartPanel, BorderLayout.CENTER);
        JPanel control = new JPanel();
        control.add(new JButton(new AbstractAction("Add") {

            @Override
            public void actionPerformed(ActionEvent e) {
                for (int i = 0; i < N; i++) {
                    added.add(rand.nextDouble(), rand.nextDouble());
                }
            }
        }));
        this.add(control, BorderLayout.SOUTH);
    }

    private ChartPanel createDemoPanel() {
        JFreeChart jfreechart = ChartFactory.createScatterPlot(
            title, "X", "Y", createSampleData(),
            PlotOrientation.VERTICAL, true, true, false);
        XYPlot xyPlot = (XYPlot) jfreechart.getPlot();
        xyPlot.setDomainCrosshairVisible(true);
        xyPlot.setRangeCrosshairVisible(true);
        XYItemRenderer renderer = xyPlot.getRenderer();
        renderer.setSeriesPaint(0, Color.blue);
        NumberAxis domain = (NumberAxis) xyPlot.getDomainAxis();
        domain.setRange(0.00, 1.00);
        domain.setTickUnit(new NumberTickUnit(0.1));
        domain.setVerticalTickLabels(true);
        NumberAxis range = (NumberAxis) xyPlot.getRangeAxis();
        range.setRange(0.0, 1.0);
        range.setTickUnit(new NumberTickUnit(0.1));
        return new ChartPanel(jfreechart);
    }

    private XYDataset createSampleData() {
        XYSeriesCollection xySeriesCollection = new XYSeriesCollection();
        XYSeries series = new XYSeries("Random");
        for (int i = 0; i < N * N; i++) {
            double x = rand.nextDouble();
            double y = rand.nextDouble();
            series.add(x, y);
        }
        xySeriesCollection.addSeries(series);
        xySeriesCollection.addSeries(added);
        return xySeriesCollection;
    }

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

            @Override
            public void run() {
                ScatterAdd demo = new ScatterAdd(title);
                demo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                demo.pack();
                demo.setLocationRelativeTo(null);
                demo.setVisible(true);
            }
        });
    }
}

导入java.awt.BorderLayout;
导入java.awt.Color;
导入java.awt.EventQueue;
导入java.awt.event.ActionEvent;
导入java.util.*;
导入javax.swing.AbstractAction;
导入javax.swing.JButton;
导入javax.swing.JFrame;
导入javax.swing.JPanel;
导入org.jfree.chart.*;
导入org.jfree.chart.axis.NumberAxis;
导入org.jfree.chart.axis.NumberTickUnit;
导入org.jfree.chart.plot.PlotOrientation;
导入org.jfree.chart.plot.XYPlot;
导入org.jfree.chart.renderer.xy.XYItemRenderer;
导入org.jfree.data.xy.XYDataset;
导入org.jfree.data.xy.XYSeries;
导入org.jfree.data.xy.XYSeriesCollection;
/**
*@见http://stackoverflow.com/questions/7231824
*@见http://stackoverflow.com/questions/7205742
*@见http://stackoverflow.com/questions/7208657
*@见http://stackoverflow.com/questions/7071057
*/
公共类ScatterAdd扩展JFrame{
专用静态最终整数N=8;
私有静态最终字符串title=“散布添加演示”;
私有静态最终随机兰德=新随机();
添加的专用XYSeries=新的XYSeries(“添加”);
公共散点添加(字符串s){
超级(s);
最终ChartPanel ChartPanel=createDemoPanel();
添加(chartPanel,BorderLayout.CENTER);
JPanel控件=新的JPanel();
add(新的JButton(新的抽象操作(“add”){
@凌驾
已执行的公共无效操作(操作事件e){
对于(int i=0;i
除非粘贴的代码不完整,否则您的问题似乎是没有将创建的NumberAxis对象与绘图关联

与其手动创建新的NumberAxis对象,不如尝试获取与绘图关联的默认ValueAxis对象,然后修改其属性:

XYPlot xyPlot = jfreechart.getXYPlot();
ValueAxis domainAxis = xyPlot.getDomainAxis();
ValueAxis rangeAxis = xyPlot.getRangeAxis();

domainAxis.setRange(0.0, 1.0);
domainAxis.setTickUnit(new NumberTickUnit(0.1));
rangeAxis.setRange(0.0, 1.0);
rangeAxis.setTickUnit(new NumberTickUnit(0.05));

谢谢你的建议……我会的。谢谢垃圾神……以你为例,不客气;你也可以自己检查一下。我如何更改蓝色标记的大小?我想让蓝色标记更大,但保持红色标记的大小不变范围,负范围不起作用。即-5.00至5.00。将只打印大于等于0的值。@BakedInhalf:示例添加范围
[0,1)
中的数据;尝试添加负值以查看差异。
XYPlot xyPlot = jfreechart.getXYPlot();
ValueAxis domainAxis = xyPlot.getDomainAxis();
ValueAxis rangeAxis = xyPlot.getRangeAxis();

domainAxis.setRange(0.0, 1.0);
domainAxis.setTickUnit(new NumberTickUnit(0.1));
rangeAxis.setRange(0.0, 1.0);
rangeAxis.setTickUnit(new NumberTickUnit(0.05));