【发布时间】:2015-05-17 18:15:24
【问题描述】:
我有一个BarChart 和一个LineChart。
可能的值从负(-)到正(+)。我如何只显示正轴标签?就像只删除数字一样。
我应该制作自定义图表还是有更简单的方法?
【问题讨论】:
标签: java javafx-8 bar-chart linechart axis-labels
我有一个BarChart 和一个LineChart。
可能的值从负(-)到正(+)。我如何只显示正轴标签?就像只删除数字一样。
我应该制作自定义图表还是有更简单的方法?
【问题讨论】:
标签: java javafx-8 bar-chart linechart axis-labels
您可以将 Y 轴下限设置为 0 并禁用自动量程:
yAxis.setAutoRanging(false);
yAxis.setLowerBound(0);
这是一个例子:
public class FXChart extends Application {
@Override
public void start(Stage stage) {
final NumberAxis xAxis = new NumberAxis();
final NumberAxis yAxis = new NumberAxis();
final LineChart<Number, Number> lineChart
= new LineChart<>(xAxis, yAxis);
//defining a series
XYChart.Series series = new XYChart.Series();
series.setName("My portfolio");
//populating the series with data
series.getData().add(new XYChart.Data(1, 23));
series.getData().add(new XYChart.Data(2, -14));
series.getData().add(new XYChart.Data(3, 15));
series.getData().add(new XYChart.Data(4, -24));
series.getData().add(new XYChart.Data(5, 34));
series.getData().add(new XYChart.Data(6, -36));
series.getData().add(new XYChart.Data(7, 22));
series.getData().add(new XYChart.Data(8, -45));
series.getData().add(new XYChart.Data(9, 43));
series.getData().add(new XYChart.Data(10, -17));
series.getData().add(new XYChart.Data(11, 29));
series.getData().add(new XYChart.Data(12, 25));
yAxis.setAutoRanging(false);
yAxis.setLowerBound(0);
Scene scene = new Scene(lineChart, 800, 600);
lineChart.getData().add(series);
stage.setScene(scene);
stage.show();
}
}
【讨论】:
查看了 NumberAxis 源代码后,我发现 NumberAxis 类中的 DefaultFormatter 类对此负责。所以重写它的 toString 方法就足够了。
myAxis.setTickLabelFormatter(new NumberAxis.DefaultFormatter(neerslagAxis) {
@Override
public String toString(Number object) {
if ((double) object < 0) {
return "";
} else {
return ("" + object).replace(".0", "");
}
}
});
【讨论】: