如何将javafx Barchart刻度设置到栏的中间?

时间:2018-03-15 15:46:27

标签: java javafx bar-chart

如何将javafx Barchart刻度设置到栏的中间?

我在刻度线和生成的柱之间得到了一些空隙。

public static class ContinentBarChart extends Application {

    @Override
    public void start(Stage stage) {
        stage.setTitle("Numebr of reqests based on continent");
        final CategoryAxis xAxis = new CategoryAxis();
        //xAxis.setStyle("-fx-font-size: " + 20 + "px;");
        xAxis.tickLabelFontProperty().set(Font.font(null,FontWeight.BOLD, 15));
        xAxis.setTickLabelRotation(90);

        final NumberAxis yAxis = new NumberAxis();
        final BarChart<String, Number> chart = new BarChart<String, Number>(xAxis, yAxis);
        //bc.autosize();
        // bc.setBarGap(-50);
        chart.setTitle("Number of reqests based on continent");
        xAxis.setLabel("Country");
        yAxis.setLabel("Number of requests");

        HashMap<String, HashMap<String, Integer>> continentCountryMap = GenericUtil
                .extractContinentCountryMapFromLogs();

        for (String continent : continentCountryMap.keySet()) {
            HashMap<String, Integer> exisitingCountry = continentCountryMap.get(continent);
            exisitingCountry = (HashMap<String, Integer>) GenericUtil.sortByValue(exisitingCountry);

            XYChart.Series series = new XYChart.Series();
            series.setName(continent);

            Set<String> countryList = exisitingCountry.keySet();
            int i = 0;
            for (String countryName : countryList) {
                if (i < 10) {
                    series.getData().add(new XYChart.Data(countryName, exisitingCountry.get(countryName)));
                    i++;
                } else {
                    break;
                }
            }
            chart.getData().add(series);

        }

        Scene scene = new Scene(chart);
        stage.setScene(scene);
        stage.show();
    }

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

如何使图表正常?我添加了解释我的要求的图像。

bar chart image

1 个答案:

答案 0 :(得分:1)

我找到了一个解决方法。但我相信它不会是精确的解决方案。

我在图表上添加了以下代码段。

chart.setBarGap(-30);

bar chart