我正在尝试编写一个名为MultipleAxisLineChart
的类。如其名称所示 - 它将是LineChart
,它将具有多个轴(我假设所有其他轴将放置在Side.LEFT
或Side.RIGHT
)。
给定侧的所有轴将由tickLabelGapProperty
定位。
右轴应该由左侧轴的总和加上x-平移'宽度。
当我开始计算首选图表宽度的时候出现了问题(考虑到我先前的假设,图表绘制的区域大小相同,因此它们可以放在彼此的顶部)。属性LineChart#widthProperty
返回整个LineChart
对象的宽度(包括y轴和gap属性) - 所以这个肯定不是为所有LineChart
s设置相同宽度的最佳候选者绘图区域(因为我必须为每个图表计算不同的宽度 - 请记住每个图表的tickLabelGap是不同的。)
我能够获得(甚至设置)轴宽(仅Axis#widthProperty
),但不能获得LineChart
绘图区域宽度。所以,我的问题是 - 有没有办法任意设置LineChart
绘图区域的宽度,以便不同图表中的所有区域具有相同的宽度?
更新
我正在尝试实现类似于HighCharts
多个轴的效果:
我的尝试是使用StackPane
并将所有图表添加为子项。我可以通过设置StackPane宽度来控制Chart的大小。
答案 0 :(得分:1)
问题已经解决了。无需使用tickLabelGapProperty
来定位LineChart
。它只能破坏所有想法,因为它的转换被计算为组件宽度。
移动轴可以通过Axis#setTranslateX(double)
完成。
回到MultipleAxisLineChart - 我创造了类似于我所呈现的东西。 Here你可以找到更多。