【问题标题】:JavaFX LineChart is clipping the series drawingJavaFX LineChart 正在剪裁系列图
【发布时间】:2020-11-01 22:50:23
【问题描述】:

错误或功能?当该值为 0(最小值)或 1(最大值)时,该系列似乎被剪裁了。我希望红色层在前面而不是被剪掉。

将 min,max 设置为 -0.1,1.1 可以避免剪裁,但会造成混乱。

除了调整背景和填充之外,我想不出任何其他尝试,但没有效果。

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.chart.*;
import javafx.stage.Stage;

public class LineChartClipping extends Application {

  LineChart makeRoot() {
    NumberAxis xAxis = new NumberAxis();
    NumberAxis yAxis = new NumberAxis(0, 1, 1); // (-0.1, 1.1, 1);
    var chart = new LineChart(xAxis, yAxis);
    var series = new LineChart.Series<>();
    chart.getData().add(series);
    double x = 0;
    for (var value : new double[]{0.5, 0, 1.0}) {
      series.getData().add(new LineChart.Data<>(x, value));  x += 2;
      series.getData().add(new LineChart.Data<>(x, value));
    }
    return chart;
  }

  @Override
  public void start(Stage stage) {
    stage.setScene(new Scene(makeRoot(), 180, 120));
    stage.show();
  }

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

在我的用例中,我这样做

    chart.setCreateSymbols(false);
    xAxis.setTickMarkVisible(false);
    xAxis.setMinorTickVisible(false);
    xAxis.setTickLabelsVisible(false);

所以最小值/最大值处的水平线如下所示:

  • macOS Catalina、Retina iMac (HiDPI)
  • JavaFX 15.0.1、Java 15.0.1

【问题讨论】:

  • 这是一个可重现的例子,从实际代码中显着减少。我不知道还有什么可以删除的,这会使它在本质上更简单。
  • 没有看到任何代码这里 ..请阅读参考的帮助页面并采取相应的行动
  • @kleopatra 我试图在这里用最少的代码发布。所以不会允许的。
  • 剥离它,只是一个简单的图表(一旦解决了这个问题就可以移动到自定义图表)与您的配置和数据..这是少数几行,不应该太多。

标签: javafx linechart


【解决方案1】:

您需要使图表的范围略大于 0 到 1,例如 -0.1 到 1.1。图表恰好停在 0 和 1 处,并且由于线条有一定的粗细,它在边缘处被夹住。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 2022-08-04
    • 2015-10-10
    • 2017-02-06
    • 2015-02-02
    • 1970-01-01
    相关资源
    最近更新 更多