JavaFX是一个用于构建富客户端应用程序的开发框架,它提供了丰富的图形界面组件和功能。LineChart是JavaFX中的一个图表组件,用于显示折线图。
如果存在不可见的系列,即某些系列的数据在图表中不可见,可以通过自动缩放来调整LineChart的显示。以下是一种实现方式:
以下是一个示例代码:
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产品介绍。
领取专属 10元无门槛券
手把手带您无忧上云