【问题标题】:JavaFX BarChart - minimum value for Y AxisJavaFX BarChart - Y 轴的最小值
【发布时间】:2016-09-29 08:26:11
【问题描述】:

我的数据从 750 000 - 1 000 000+- 变化,所以我实际上不需要看到低于 750 000 的值。

如果我只是让 y[i] - 750 000 那么还有另一个问题(显示在 AxisY min 0 和 to 250 000+-)

我怎样才能用BarChart 做到这一点?

BarChart<String,Number> bc= new BarChart<String, Number>(xAxis,yAxis);//statistic-years
bc.setTitle("Statistic-Years");
xAxis.setLabel("Country");
yAxis.setLabel("Value");
int[] cityPopulation = {
    857200, 866500,871100,880400,889600,891900, 889800, 882100, 873200, 864400, 854300, 844300, 831500, 818910,
    816382, 814255,813159,811939,812990,812862, 812605, 814224, 814070, 815786, 816061, 815269, 814758, 813387};
int[] countryPopulation = {
        1075400,1059100,1043300,1028000,1022300,1012900,999900,993100,987300,980200,974400,966700,959500,953461,937490,
        921981, 906978, 889632, 873477, 859355, 847370, 836384,827131,818401,810977,802993,795815,788776,
};
XYChart.Series series1 = new XYChart.Series();
series1.setName("Country population");
XYChart.Series series2 = new XYChart.Series();
series2.setName("City population");
bc.setStyle("-fx-font-size: 14;-fx-font-weight: bolder;");
bc.setStyle("CHART_COLOR_1: rgb(2,0,94); " + "CHART_COLOR_2: rgb(189,0,18); ");
for (int i =0;i<cityPopulation.length;i++) {
    series1.getData().add(new XYChart.Data(""+(i+1989),countryPopulation[i]));
    series2.getData().add(new XYChart.Data(""+(i+1989),cityPopulation[i]));
}
bc.getData().add(series1);
bc.getData().add(series2);

【问题讨论】:

    标签: java javafx bar-chart


    【解决方案1】:

    轴有这些边界,因为autoRangingProperty 的默认值是trueforceZeroInRangeProperty 的默认值也是true

    这意味着,轴将自动设置自己的边界,同时始终显示零值,因此下限将至少为零。

    您可以将forceZeroInRangeProperty设置为false,这将导致自动测距,但由于不强制显示零值,因此将根据显示数据的最小值和最大值计算边界。

    yAxis.setForceZeroInRange(false);
    

    或者,您可以手动设置轴边界:

    例如使用适当的constructor 来设置下限和上限:

    NumberAxis yAxis = new NumberAxis(700000, 1200000, 1000);
    

    或将autoRangingProperty 设置为false 并将lowerBoundPropertyupperBoundProperty 设置为所需的值:

    NumberAxis yAxis = new NumberAxis();
    yAxis.setAutoRanging(false);
    yAxis.setLowerBound(700000);
    yAxis.setUpperBound(1200000);
    

    forceZeroInRangeProperty 设置为 false 的图表示例:

    【讨论】:

    • 哦,太感谢了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-20
    • 2013-06-08
    • 2016-01-02
    • 2013-09-30
    • 2015-05-13
    • 2015-04-29
    • 1970-01-01
    相关资源
    最近更新 更多