我需要在LineChart上显示/隐藏系列的可能性。现在我这样做:
series.getNode().setVisible(false);
series.getNode().setManaged(false);
但是,虽然此后系列不可见,但图表轴自动调整仍然会考虑系列数据的范围。我累了设置托管财产:
df.iloc[:, 5:-3].apply(lambda row: row.nlargest(2).values[-1],axis=1)
但没有成功。那么,有没有办法隐藏一个系列并将其从轴autorange中排除?
答案 0 :(得分:0)
似乎,目前唯一的方法是扩展LineChart
并覆盖updateAxisRange()
以修改它以仅考虑可见系列:
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);
}
}
}
}