JavaFX折线图问题

JavaFX折线图问题,java,javafx,Java,Javafx,我有以下代码: final TreeMap<Integer, Double> ADLMap = new TreeMap<>(); public static void main(String[] args) { launch(args); } @Override public void start(Stage stage) { final String currency = "currreny"; ADL(currency);

我有以下代码:

 final TreeMap<Integer, Double> ADLMap = new TreeMap<>();

    public static void main(String[] args) {
    launch(args);
}

  @Override
public void start(Stage stage) {
    final String currency = "currreny";
    ADL(currency);
    stage.setTitle("Line Chart Sample");
    //defining the axes
    final NumberAxis xAxis = new NumberAxis();
    final NumberAxis yAxis = new NumberAxis();
    xAxis.setLabel("Number of Month");
    //creating the chart
    final LineChart<Number, Number> lineChart = new LineChart<Number, Number>(xAxis, yAxis);
    lineChart.setTitle("Stock Monitoring, 2010");
    //defining a series
    XYChart.Series ADLChart = new XYChart.Series();
    XYChart.Series regularChart = new XYChart.Series();

    ADLChart.setName("My portfolio");

    chartMap.entrySet().forEach(entry -> regularChart.getData().add(new XYChart.Data(entry.getKey(), entry.getValue())));

    //populating the series with data
    ADLMap.entrySet().forEach(entry -> ADLChart.getData().add(new XYChart.Data(entry.getKey(), entry.getValue())));
    System.out.println(ADLMap);
    lineChart.setCreateSymbols(false);

    Scene scene = new Scene(lineChart, 1200, 1000);
    //lineChart.getData().add(regularChart);
    lineChart.getData().add(ADLChart);

    stage.setScene(scene);
    stage.show();


    final double SCALE_DELTA = 1.1;
    lineChart.setOnScroll(new EventHandler<ScrollEvent>() {
        public void handle(ScrollEvent event) {
            event.consume();

            if (event.getDeltaY() == 0) {
                return;
            }

            double scaleFactor = (event.getDeltaY() > 0) ? SCALE_DELTA : 1 / SCALE_DELTA;

            lineChart.setScaleX(lineChart.getScaleX() * scaleFactor);
            lineChart.setScaleY(lineChart.getScaleY() * scaleFactor);
        }
    });

    lineChart.setOnMousePressed(new EventHandler<MouseEvent>() {
        public void handle(MouseEvent event) {
            if (event.getClickCount() == 2) {
                lineChart.setScaleX(1.0);
                lineChart.setScaleY(1.0);
            }
        }
    });

}

   private void ADL(final String currency) {
    double counter = -4000000.0;
    int mapCounter = 0;
    while (counter < 4000000) {
        ADLMap.put(mapCounter++, counter++);
    }
}
final TreeMap ADLMap=new TreeMap();
公共静态void main(字符串[]args){
发射(args);
}
@凌驾
公众假期开始(阶段){
最终字符串curreny=“curreny”;
ADL(货币);
阶段。设置标题(“折线图样本”);
//定义轴
最终数字axis xAxis=新数字axis();
最终数字axis yAxis=新数字axis();
xAxis.setLabel(“月数”);
//创建图表
最终线形图线形图=新线形图(xAxis,yAxis);
线形图.setTitle(“库存监控,2010年”);
//定义系列
XYChart.Series ADLChart=新的XYChart.Series();
XYChart.Series regularChart=新的XYChart.Series();
ADLChart.setName(“我的投资组合”);
chartMap.entrySet().forEach(entry->regularChart.getData().add(new XYChart.Data(entry.getKey(),entry.getValue()));
//用数据填充序列
ADLMap.entrySet().forEach(entry->ADLChart.getData().add(new XYChart.Data(entry.getKey(),entry.getValue()));
系统输出打印LN(ADLMap);
lineChart.setCreateSynumbles(false);
场景=新场景(折线图,1200,1000);
//lineChart.getData().add(regularChart);
lineChart.getData().add(ADLChart);
舞台场景;
stage.show();
最终双刻度_δ=1.1;
lineChart.setOnScroll(新的EventHandler(){
公共无效句柄(ScrollEvent事件){
event.consume();
if(event.getDeltaY()==0){
返回;
}
双尺度因子=(event.getDeltaY()>0)?尺度增量:1/尺度增量;
lineChart.setScaleX(lineChart.getScaleX()*scaleFactor);
lineChart.setScaleY(lineChart.getScaleY()*scaleFactor);
}
});
lineChart.setOnMousePressed(新的EventHandler(){
公共无效句柄(MouseeEvent事件){
if(event.getClickCount()==2){
线形图.设置刻度(1.0);
线形图.设置刻度(1.0);
}
}
});
}
私有无效ADL(最终字符串货币){
双计数器=-4000000.0;
int mapCounter=0;
而(计数器<4000000){
ADLMap.put(映射计数器++,计数器++);
}
}
该映射包含以下值: 钥匙n+1 n欧元英寸 值的范围为-10.000.000到+10.000.000

我的问题:它根本不绘制值。至少我什么也看不见


有人能帮忙吗?

我的错误是一个复杂的算法产生了一个不精确的数字,它被放在树状图中。图表无法绘制ofc。

你能这样做吗,这样它就可以生成一个新的图形?几乎所有你需要做的就是用硬编码或随机数据定义和填充地图。其他人可以运行它并查看问题,并且可以确保问题不会由您的数据引起。(FWIW如果我自己做的话,效果很好。)对不起!我编辑了我的代码。这样可以吗?附言:我测试了地图内容等。看起来问题在于大数值?你有800万个数据点???Y轴的范围从-4.000.000到+4.000.000是的。图形也可能只有100个X轴点,但Y仍然可以是这百万范围内的所有东西,是的。问题不是Y轴的范围:问题是实际的点数。图表中的每个点都由一个UI节点表示。这可能有用。。。它只需要非常长的时间和大量的内存来显示。如果你只有100分,它有效吗?