如何在JavaFX中在XYChart轴上创建自定义非线性记号

如何在JavaFX中在XYChart轴上创建自定义非线性记号,java,javafx,javafx-8,Java,Javafx,Javafx 8,我需要在XYChart的轴上放置一组完全自定义的非线性记号。你能就如何处理这个问题给我一些一般性的高层建议吗?API似乎不直接支持它,除非我遗漏了什么 点是否沿该轴以非线性方式绘制对我来说无关紧要,因为我可以在绘制之前扭曲数据 我考虑过的一个简单选项是在轴上设置tickLabelFormatter属性,使用自定义的StringConverter子类在将数字转换为字符串之前对其进行扭曲。即使这将导致正确的标签,他们将是非常松散的数字。理想情况下,刻度线和网格线不应在屏幕上均匀分布,而应在其自身的非

我需要在
XYChart
的轴上放置一组完全自定义的非线性记号。你能就如何处理这个问题给我一些一般性的高层建议吗?API似乎不直接支持它,除非我遗漏了什么

点是否沿该轴以非线性方式绘制对我来说无关紧要,因为我可以在绘制之前扭曲数据


我考虑过的一个简单选项是在轴上设置
tickLabelFormatter
属性,使用自定义的
StringConverter
子类在将数字转换为字符串之前对其进行扭曲。即使这将导致正确的标签,他们将是非常松散的数字。理想情况下,刻度线和网格线不应在屏幕上均匀分布,而应在其自身的非线性刻度的圆形数字上。

不是一个完整的答案,但您可能需要将
NumberAxis
子类化,并覆盖
calculateTickValues
calculateMinorTickMarks
。您几乎肯定需要浏览(是的,在编写得非常好的API中,这是不必要的)。NumberAxis是最终版本,因此您必须使用ValueAxis。这是我为时间轴所做的。