Pre loader

formatCursorLabel() returning wrong values


enter image description here

There is a problem with cursor axis label – it is completely wrong (always too big). I don’t have any custom label provider set for this axis.
It is funny that on cursor tooltip the value is correct (here I use CustomXYSeriesInfoProvider).

The same thing happens on Volume, but here I have a custom NumericLabelProviderVolume and I have debugged formatCursorLabel() in it and found out that there are always two subsequent calls of this function. With first call the incoming parameter (Comparable dataValue) is correct, but then in the second call this value is wrong and it overwrites previous right formatted value. I don’t now where does this value come from.

  • You must to post comments
Best Answer

Hi Primoz,

Well I believe this could be caused by using custom axis layout strategy. Some modifiers doesn’t work well in this case. That’s why we disabled CreateMultiPaneStockChartFragment example which uses single chart instance to draw everything and created CreateMultiPaneStockChartsFragment which uses multiple SciChartSurface instances instead.

I’ve created a task in our bugtracker to investigate why this happens and for now I would suggest you to use multiple chart instances like we did in our demo application.


This bug should be fixed in v2.5.0.2496 and above

Best regards,

  • Primoz
    Using multiple surfaces helped and we will stick with it until this is addressed. The downside is that you don’t see cursor’s X axis value with surfaces which have X axis hidden (any way to sync?). Secondly, how do we properly use zoomExtents with this setup (enough if called on one surface?) and UpdateSuspender (takes in just one surface)? Lastly, since cursor has an offset on top of finger press position, it only shows when user taps on the lower part of the 3 smaller surfaces (macd,rsi,vol) – any way to “fix” this?
  • Yura Khariton
    I would suggest to take a look on our Sync Multi Chart example ( ). In general to sync chart you can share VisibleRange instances between axes in different chart. To share touch events between modifiers you need set MotionEventsGroup property for ModifierGroup. Regarding zoom extents – it depends on your use case. If you need to zoom extents on xAxis only and if you have same xValues then you can call it for one chart and because of shared VisibleRange it will be applied for all charts. For yAxes which usually have different ranges because of different yValues so they can’t be sync using shared VisibleRange you’ll need to call zoom extents for each chart separately. Regarding UpdateSuspender – well it depends on your needs. Usually you need to suspend updates on chart which is updated ( e.g. when you add series, data points, axes etc ) to prevent unnecessary redraws of chart and in most cases it’s done in sequential order so there is no need to lock more than one surface at once. If you need to lock more than one surface just call suspendUpdates() in loop for required charts, store IUpdateSuspender instances which returned by suspendUpdates() call in some list, then after updating data iterate over those instances in list and call dispose() or close() for each of them to resume updates of charts. To remove offset of CursorModifier just set it to 0 ( )
  • Yura Khariton
    Can you try to update to the latest version from our Maven repository ( v2.5.0.2496 and above )? I believe the originally reported issue with axis tooltips should be fixed now.
  • You must to post comments
Showing 1 result
Your Answer

Please first to submit.

Try SciChart Today

Start a trial and discover why we are the choice
of demanding developers worldwide

Start TrialCase Studies