JavaFX-StackedAreChart和方法setLowerBound
我对StackedAreaChart和setLowerBound类有一些问题。 当我将autoRangingProperty设置为true时,一切正常 但是当我关闭自动范围并设置一些参数时,我有一些错误JavaFX-StackedAreChart和方法setLowerBound,java,css,eclipse,javafx,stacked-area-chart,Java,Css,Eclipse,Javafx,Stacked Area Chart,我对StackedAreaChart和setLowerBound类有一些问题。 当我将autoRangingProperty设置为true时,一切正常 但是当我关闭自动范围并设置一些参数时,我有一些错误 谁有办法解决这个问题。我在StackedAreaChart上遇到了类似的问题,我必须在将所有值添加到图表之前有效地偏移它们,以便图表实际上从零开始,然后调整y轴标签以使其正确 setAutoRanging(false) setForceZeroInRange(假) 计算出要添加到图形中的值的
谁有办法解决这个问题。我在StackedAreaChart上遇到了类似的问题,我必须在将所有值添加到图表之前有效地偏移它们,以便图表实际上从零开始,然后调整y轴标签以使其正确
setAutoRanging(false)代码>
setForceZeroInRange(假)代码>
setLowerBound(0)代码>
setUpperBound(…)代码>最大值减去最小值
在y轴上设置TickLabelFormatter
,并在StringConverter
toString
方法中,在格式化之前将最小值添加到值中import java.util.Random;
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.chart.NumberAxis;
import javafx.scene.chart.StackedAreaChart;
import javafx.scene.chart.XYChart;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
public class TestStackedAreaChart extends Application {
StackPane mainGraphStackPane = null;
BorderPane pane;
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage stage) {
// /
Random generator = new Random();
XYChart.Series<Number, Number> series1 = new XYChart.Series<>(); // line
XYChart.Series<Number, Number> series2 = new XYChart.Series<>(); // down
XYChart.Series<Number, Number> series3 = new XYChart.Series<>(); // up
for (int i = 1; i < 50; i++) {
Double value = generator.nextDouble() + 1;
series1.getData().add(new XYChart.Data<Number, Number>(i, value));
Double Ymin = value - generator.nextDouble() * 0.2;
series2.getData().add(new XYChart.Data<Number, Number>(i, Ymin));
Double Ymax = (value - Ymin) + generator.nextDouble() * 0.2;
series3.getData().add(new XYChart.Data<Number, Number>(i, Ymax));
}
// /
final NumberAxis xAxisLC = new NumberAxis();
final NumberAxis yAxisLC = new NumberAxis();
/////////what's wrong
yAxisLC.autoRangingProperty().set(false);
yAxisLC.setMinorTickLength(yAxisLC.getTickLength());
yAxisLC.setMinorTickCount(0);
yAxisLC.setUpperBound(2.5);
yAxisLC.setLowerBound(1.0); //when I set 0.0 is OK
yAxisLC.setTickUnit(0.2);
///////
pane = new BorderPane();
mainGraphStackPane = new StackPane();
mainGraphStackPane.getChildren().add(pane);
StackedAreaChart<Number, Number> areaChart = new StackedAreaChart<Number, Number>(
xAxisLC, yAxisLC);
areaChart.setCreateSymbols(false);
areaChart.setAlternativeRowFillVisible(false);
areaChart.setAnimated(false);
areaChart.setLegendVisible(false);
areaChart.getData().add(series2);
areaChart.getData().add(series3);
Scene scene = new Scene(mainGraphStackPane);
mainGraphStackPane.getChildren().add(areaChart);
mainGraphStackPane.getStylesheets().add("chart.css");
stage.setScene(scene);
Group root = new Group();
pane.getChildren().add(root);
stage.show();
stage.setWidth(stage.getWidth() + 1);
stage.setHeight(stage.getHeight() + 1);
}
}
@CHARSET "UTF-8";
.default-color0.chart-area-symbol { -fx-background-color: #e9967a, #ffa07a; }
.default-color1.chart-area-symbol { -fx-background-color: #e9967a, #ffa07a; }
.default-color0.chart-series-area-line { -fx-stroke: #ffaa00; }
.default-color1.chart-series-area-line { -fx-stroke: #ffaa00; }
.default-color0.chart-series-area-fill { -fx-fill: #ffff0055; }
.default-color1.chart-series-area-fill { -fx-fill: #ffaa005