首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如果存在不可见的系列,如何自动缩放JavaFX LineChart?

JavaFX是一个用于构建富客户端应用程序的开发框架,它提供了丰富的图形界面组件和功能。LineChart是JavaFX中的一个图表组件,用于显示折线图。

如果存在不可见的系列,即某些系列的数据在图表中不可见,可以通过自动缩放来调整LineChart的显示。以下是一种实现方式:

  1. 获取LineChart的数据系列列表。
  2. 遍历数据系列列表,判断每个系列是否可见。
  3. 如果某个系列不可见,则从LineChart中移除该系列。
  4. 计算剩余可见系列的最小值和最大值。
  5. 根据最小值和最大值,设置LineChart的纵坐标范围。

以下是一个示例代码:

代码语言:txt
复制
import javafx.application.Application;
import javafx.collections.ObservableList;
import javafx.scene.Scene;
import javafx.scene.chart.LineChart;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.XYChart;
import javafx.stage.Stage;

public class LineChartExample extends Application {

    @Override
    public void start(Stage stage) {
        // 创建横坐标和纵坐标
        NumberAxis xAxis = new NumberAxis();
        NumberAxis yAxis = new NumberAxis();

        // 创建LineChart
        LineChart<Number, Number> lineChart = new LineChart<>(xAxis, yAxis);
        lineChart.setTitle("Line Chart Example");

        // 添加数据系列
        XYChart.Series<Number, Number> series1 = new XYChart.Series<>();
        series1.setName("Series 1");
        series1.getData().add(new XYChart.Data<>(1, 23));
        series1.getData().add(new XYChart.Data<>(2, 14));
        series1.getData().add(new XYChart.Data<>(3, 15));
        lineChart.getData().add(series1);

        XYChart.Series<Number, Number> series2 = new XYChart.Series<>();
        series2.setName("Series 2");
        series2.getData().add(new XYChart.Data<>(1, 10));
        series2.getData().add(new XYChart.Data<>(2, 8));
        series2.getData().add(new XYChart.Data<>(3, 12));
        lineChart.getData().add(series2);

        // 判断并移除不可见的系列
        ObservableList<XYChart.Series<Number, Number>> seriesList = lineChart.getData();
        for (XYChart.Series<Number, Number> series : seriesList) {
            if (!series.getNode().isVisible()) {
                seriesList.remove(series);
            }
        }

        // 计算最小值和最大值
        double minValue = Double.MAX_VALUE;
        double maxValue = Double.MIN_VALUE;
        for (XYChart.Series<Number, Number> series : seriesList) {
            for (XYChart.Data<Number, Number> data : series.getData()) {
                double yValue = data.getYValue().doubleValue();
                if (yValue < minValue) {
                    minValue = yValue;
                }
                if (yValue > maxValue) {
                    maxValue = yValue;
                }
            }
        }

        // 设置纵坐标范围
        yAxis.setAutoRanging(false);
        yAxis.setLowerBound(minValue);
        yAxis.setUpperBound(maxValue);

        // 创建场景并显示
        Scene scene = new Scene(lineChart, 800, 600);
        stage.setScene(scene);
        stage.show();
    }

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

在这个示例中,我们创建了一个LineChart,并添加了两个数据系列。然后,我们遍历数据系列列表,判断每个系列的可见性,并移除不可见的系列。接下来,我们计算剩余可见系列的最小值和最大值,并根据这些值设置纵坐标的范围。

这是一个简单的示例,你可以根据自己的需求进行修改和扩展。对于JavaFX的更多信息和使用方法,你可以参考腾讯云的JavaFX产品文档:JavaFX产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券