如果存在不可见系列,如何自动缩放JavaFX折线图?
我需要在折线图上显示/隐藏序列的可能性。现在我是这样做的:如果存在不可见系列,如何自动缩放JavaFX折线图?,javafx,linechart,Javafx,Linechart,我需要在折线图上显示/隐藏序列的可能性。现在我是这样做的: series.getNode().setVisible(false); 但是,尽管在此之后序列是不可见的,图表轴自动范围仍然会考虑序列数据的范围。我还设置了托管资产: series.getNode().setVisible(false); series.getNode().setManaged(false); 但是没有成功。那么,是否有某种方法来隐藏一个系列并将其从AxOutOracle?< P>中排除,看来目前唯一的方法是扩展线形
series.getNode().setVisible(false);
但是,尽管在此之后序列是不可见的,图表轴自动范围仍然会考虑序列数据的范围。我还设置了托管资产:
series.getNode().setVisible(false);
series.getNode().setManaged(false);
但是没有成功。那么,是否有某种方法来隐藏一个系列并将其从AxOutOracle?< P>中排除,看来目前唯一的方法是扩展线形图并重写UpDATEAxISWAN来修改它,只考虑可见的系列:
public class MLineChart<X, Y> extends LineChart<X, Y> {
public MLineChart(@NamedArg("xAxis") Axis<X> xAxis, @NamedArg("yAxis") Axis<Y> yAxis) {
super(xAxis, yAxis);
}
@Override
protected void updateAxisRange() {
final Axis<X> xa = getXAxis();
final Axis<Y> ya = getYAxis();
List<X> xData = null;
List<Y> yData = null;
if (xa.isAutoRanging()) xData = new ArrayList<X>();
if (ya.isAutoRanging()) yData = new ArrayList<Y>();
if (xData != null || yData != null) {
for (Series<X, Y> series : getData()) {
if (series.getNode().isVisible()) { // consider only visible series
for (Data<X, Y> data : series.getData()) {
if (xData != null) xData.add(data.getXValue());
if (yData != null) yData.add(data.getYValue());
}
}
}
// RT-32838 No need to invalidate range if there is one data item - whose value is zero.
if (xData != null && !(xData.size() == 1 && getXAxis().toNumericValue(xData.get(0)) == 0)) {
xa.invalidateRange(xData);
}
if (yData != null && !(yData.size() == 1 && getYAxis().toNumericValue(yData.get(0)) == 0)) {
ya.invalidateRange(yData);
}
}
}
}