首页
学习
活动
专区
工具
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产品介绍

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

相关·内容

  • IDEA与eclipse桌面配置基础

    在eclipse中配置jdk Window–>Preferences–>java–>installed JREs–>add–>Standard VM–>选择jdk安装路径就好了 设置字符集编码为utf-8,防止中文乱码 设置字符集编码为UTF-8:Window–>Preferences–>General–>Workspace–>选择Other为UTF-8,General–>Content Types里面的Text内容全部设为UTF-8 设置新建jsp页面默认为UTF-8编码:Window–>Preferences–>Web–>JSP Files–>Encoding设置为UTF-8 设置eclipse的代码自动提示 Window–>Preferences–>java–>editor–>content assist–>右侧框里auto activation triggers for java值设置为 “abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXVZ.” 在eclipse配置Maven Window–>Preferences–>Maven–>Installations–>add–>选择maven的解压目录就好了,然后勾选新增的maven, 在配置User Settings–>选择maven的settings.xml文件 Eclipse中的Java–>Installed JREs,可以选择JRE所在目录,也可以选择JDK所在目录,选择JDK所在目录有个好处就是可以查看源码。 Compiler Compiler compliance level:编译Java程序时使用的JRE版本。 Libraries:配置classpath的地方,既然要运行Java程序,肯定要包含JRE。

    03

    写【Python折线图】的一百个技巧(一、生成折线图网页)

    本系列文章主要针对Python语言【pyecharts】库生成折线图功能进行深入探究与二次开发而撰写的,专栏文章的作用是帮助大家在工作中【快速】、【高效】、【美观】、【大气】的展示各种适合【折线图】的数据,且只针对折线图,我相信折线图才是最美的图表,在折线图中你能找到真正的数学之美,当前只针对生成网页类型可以截图使用,也可以通过录制操作过程生成小视频的方式使用,后期我会想办法针对视频自动演示进行研究,可能前几十篇或甚至是上百篇文章都是对折线图的具体探究与深度学习,后面的文章我会写一些功能类的GUI工具,用于生成各类折线图,有望在2024年的年会PPT汇报上给予大家【唯美】的帮助。

    04
    领券