为了账号安全,请及时绑定邮箱和手机立即绑定

具有非零轴最小值的 sencha gxt 堆积条表现不正确

具有非零轴最小值的 sencha gxt 堆积条表现不正确

慕侠2389804 2023-03-31 09:41:33
我正在构建一个堆积条形图,但是当我为轴指定一个最小值时,条形图的渲染会变形,并且轴比例/步长是错误的。然而,我添加的系列确实按预期工作。这是初始图表:当我向轴提供最小值/最大值时:NumericAxis<MarketDataDetailsDecorator> axis = new NumericAxis<>();axis.setPosition(Chart.Position.BOTTOM);axis.setMinimum(995); // only this lineaxis.setMaximum(1016);// and this line get added您可以看到条形图适用于完全不同的值,但蓝线仍然正确。此外,轴以非线性方式递增:995,997,999、1001,1003,1006,1008、1010、1012、1014,1016这是一个错误,还是两个 - 还是我在 api 中遗漏了什么?这是突出问题的要点: https://gist.github.com/NimChimpsky/b4dc3dddc629ffefc7be2469eaa87d3a我正在尝试显示放大版本的条形图,值范围为 1002.5 - 1005.5,第一个图表是正确的,但第二个图表似乎是随机分配值?
查看完整描述

1 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

我用这个条形图以及我本地的 OP's gist 进行了测试。


非零轴最小值问题

这绝对是绘制逻辑的错误(相同的问题,但在 extjs 上)。忽略值的变化,这也给这个问题增加了进一步的麻烦,假设我们将底轴的值maximum更新为,如果绘制图表上条形图的原始高度应该是,它将减少到(derived from )。minimumnhh - nh * (h-n)/h

例如;

  • 在这里h ~= 1000, 和n = 500, 所以我们看到绘制的条的无效高度是1000 - 500 = 500, 所以50%条的长度...


//img4.sycdn.imooc.com/64263a910001d55106260371.jpg

这里h ~= 100spacer.gif0, 和n = 750, 和1000 - 750 = 250,25%

//img1.sycdn.imooc.com/64263aa10001077706270372.jpg


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

可悲的是,我无法仅通过用户可用的方法修复此问题,而无需访问 中的糟糕代码BarSeries,即使这样做维护起来也很麻烦,而不是修改第 3 方非开源代码的最佳选择。我建议创建一张到这家公司的票...


超出轴范围的数据问题

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

//img3.sycdn.imooc.com/64263aaf0001970e06560392.jpg

所以看起来当数据超出范围时,就会出现这种错误,图表上的数据集没有固有的隐藏/过滤逻辑。


轴标签步骤不一致问题

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

例如,让我们使用[90-115], with max - min = 25,这会产生以下问题;


//img1.sycdn.imooc.com/64263ac20001ee5206540387.jpg

如果你只是做数学;

step = (max - min) / 10 = 25 / 10 = 2.5

标签的价值;

  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


查看完整回答
反对 回复 2023-03-31
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信