sencha gxt堆叠的条具有最小非零轴的行为,其行为不正确

Nim*_*sky 11 java gwt extjs gxt

我正在构建堆积的条形图,但是,当我为轴指定最小值时,条形的渲染会扭曲,并且轴的比例/步长是错误的。我添加的行系列确实按预期工作。

这是初始图表: 没有setMin

当我向轴提供最小值/最大值时:

NumericAxis<MarketDataDetailsDecorator> axis = new NumericAxis<>();
axis.setPosition(Chart.Position.BOTTOM);
axis.setMinimum(995); // only this line
axis.setMaximum(1016);// and this line get added
Run Code Online (Sandbox Code Playgroud)

与setMin

您可以看到条形图在完全不同的值上工作,但是蓝线仍然正确。此外,在一个非线性方式轴增量它步骤:995997999,1001,1003,1006,1008,1010,1012,1014,1016

这是一个错误还是两个错误-还是我在api中缺少了某些内容?

这是一个突出问题的要点:https : //gist.github.com/NimChimpsky/b4dc3dddc629ffefc7be2469eaa87d3a

我正在尝试显示条形图的放大版本,值的范围是1002.5-1005.5,第一个图是正确的,但是第二个图似乎是在随机分配值?

bur*_*ete 6

我使用此条形图以及本地OP的要旨进行了测试。


非零轴最小值问题

这绝对是绘制逻辑的错误(相同的问题,但在extjs上)。忽略随maximum值的变化,这也给这个问题带来了更多麻烦,假设我们minimum将底轴的值更新为n,如果绘制的图表上条形图的原始高度应该为h,它将减小为h - n(从推导h * (h-n)/h)。

例如;

  • h ~= 1000和中n = 500,如我们所见,绘制的条形的无效高度为1000 - 500 = 500,因此50%条形的长度...

    在此处输入图片说明

  • 在这里h ~= 1000,和n = 7501000 - 750 = 25025%

    在此处输入图片说明

  • 并以OP的example h ~= 1000和为例,n = 995因此我们看到了极短的0.5%长条。

遗憾的是,我无法仅通过用户可用的方法来解决此问题,而无需访问中的糟糕代码BarSeries,即使这样做,维护起来也很麻烦,而不是最好的修改第三方非开放源代码的方法。我建议为该公司创建一张票...


超出轴范围数据问题

当下轴的范围减小到时[95-105],行为将变得不稳定,条形图将堆积在x轴后面。

在此处输入图片说明

因此,当数据超出范围时,似乎会出现这种错误,图表上的数据集没有固有的隐藏/过滤逻辑。


轴标签步骤不一致问题

这似乎与使用默认设置的步长计算近似是一个问题10 steps(实际上还有其他逻辑,但是除非使用了更多自定义设置,否则将是10)。如果给出一个手动范围,而如果给出一个范围,(max - min) % 10 != 0那么由于步长计算的近似性,您将遇到这种问题。

例如,让我们在中使用[90-115]max - min = 25这会导致以下问题;

在此处输入图片说明

如果你只是做数学;

step = (max - min) / 10 = 25 / 10 = 2.5
Run Code Online (Sandbox Code Playgroud)

标签的价值;

  1. 90 +(2.5 x 0)= 90
  2. 90 +(2.5 x 1)= 92.5〜= 93
  3. 90 +(2.5 x 2)= 95
  4. 90 +(2.5 x 3)= 97.5〜= 98
  5. ...

因此,这只是范围和默认步长量之间的不匹配。您可以通过axis.setSteps()在底轴上使用自定义步长值(该值将max - min均匀除以该值)来进行调制。