我“偷”了一些代码here http://fxexperience.com/2012/01/curve-fitting-and-styling-areachart/拥有一个AreaChart
我在 FXML 中使用了“平滑线条”,它的工作原理如下:
<SmoothedAreaChart fx:id="chart" legendVisible="false"
title="Tree depth by line" animated="false">
<xAxis>
<NumberAxis fx:id="xAxis" tickUnit="1.0" autoRanging="false"
minorTickVisible="false" forceZeroInRange="false"
label="Line number"/>
</xAxis>
<yAxis>
<NumberAxis fx:id="yAxis" minorTickVisible="false"
tickUnit="1.0" forceZeroInRange="true" label="Tree depth"/>
</yAxis>
</SmoothedAreaChart>
然而我遇到的问题是 Y 轴。
我设置了tickUnit
to 1.0
因为我想要积分单位,但它不太有效:
如果,在定义中yAxis
, I set autoRanging
to false
然后图形被裁剪(我在填充图形时手动设置上限):
而且,还有太多的刻度线。
基本上,我想要两者的行为:
是否有可能做到这一点,或者我需要自己编写代码/找到一个实现Axis
这是哪个?
好吧,我找到了一个解决方案。
我不再在 FXML 中指定刻度单位;相反,我在代码中执行此操作,同时设置 y 轴的最大值(并且自动调整范围设置为 false):
display.yAxis.setUpperBound(maxDepth);
final int tickUnit = maxDepth / 15;
display.yAxis.setTickUnit(Math.max(tickUnit, 1));
当然,这是一种黑客行为,我确实希望它一开始就存在于 API 中。又或许是这样,只是我没看到……
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)