Highchart - highstock scroll out of sync with zoom - highcharts

I have a chart on which I am showing very small interval time data (close to 2 minutes), when I zoom In using drag at the centre of chart, the call to server gets the zoomed data but the at x-axis the navigator(horizontal scroll) moves the zoomed in data to extreme left it should have been in centre of time line.
Say for example timeline has interval in seconds as below
0---30---60---90---120
and I zoom in at 30 to 90
The navigator or scroll axis should have stayed at 0---120 and the focus part should be 30---90
but In my case it changing the navigator to 30 to 120 and focus area moves to extreme left.
Note: with bigger time intervals it works fine

The navigator call setExtremes function which set a range on any axis. Unfortunatley it is default behaviour and you cannot zoom chart partly.

Related

Real Time trend direction

Since Real Time trend plots right to left, is there a way to change the direction so it will plot left to right and when the pen gets to about 75% of the charts width, the chart shifts to the left 50% of the charts width and continues plotting?
The trend is always plotting left to right. But it looks different since you start with an empty plot. This would look different if you had connected it to Historian where you would start with a full plot.
The trend control has a property called "RefreshTimes" which continuously updates the end time to current time. If you set this property to 0, your trend will have static start and end times. The trend line(s) should still update, making it plot from left to right.
You can then control the start and end times through scripting.

Highcharts: Show x axis for missing data but ignoring certain area

I want to use the Highcharts StockChart library to make a chart. Here's more info on the chart I need to create:
The type of the chart is datetime
The data is being updated on every minute (it's data from stocks), so the chart is being constantly updated.
The data of the chart is from 9:00am to 11:40am and then from 12:35pm to 3:00pm (there's a lunch break).
The data is being shown with bars in an interval of 5 minutes (data is received for every 5 minutes except for the lunch break).
The bars will start to be drawn from left to right as the data is received.
The bars width needs to be the same size regardless of how many data is being shown on the chart.
The labels of x axis of the chart need to be always the same and on the same position (from 9:00am to 3:00pm every hour) even when there's missing data (a line must be drawn on the x axis).
So, I'm using the max property set to that day at 3:00pm on the x axis of the chart. With this, I can:
Have the bars width to be the same
Have the x axis be drawn regardless of the missing data on the same interval (until 3pm).
Everything works ok until the lunch break (11:40am). However, when receiving data for 12:35pm (after lunch break), the chart will ignore the max property and the last line of the x axis that is drawn is until 1pm (this line needs to be drawn until 3pm). I assume that this is because until 11:40am all the data for 5 minutes is present, so the chart understands the interval on which the data needs to be drawn and also can draw the x axis lines on the same interval. But as soon as there's a gap on the data, the chart doesn't know anymore if data will keep coming in an interval of 5 minutes, so will just take into consideration all the data that has received until now, ignoring the max property.
I have tried different options in order to solve the issue:
I used ordinal property set to false. With this, I can solve the issue of the missing x axis labels until 3pm, but the issue is that the lunch break will have a gap on the chart. I need to merge the lunch break and having the x axis labels drawn until 3pm.
I tried to use the tickInterval property and was able to set the interval of the x axis but only for the data that is being drawn. However, the x axis label it still until 1pm and needs to be until 3pm.
I tried to use the breaks property for the lunch break while using the ordinal property set to false but didn't work. Also, the chart needs to be merged on the lunch break; using this property will create a gap on purpose, so this property won't help me to fix this issue.
So, I noticed that the interval is being changed correctly where there's data, but the lines are not being drawn where there's no data on the x axis (only until 1pm and not until 3pm). And if I use the ordinal property, it will show all the x axis lines for the missing data, but need to hide the gap for the lunch break.
Any help with this is appreciated =)
UPDATE:
I noticed that when there's still no data, if using v1.3.1 of highcharts (the one I'm currently using), the x axis lines are being drawn correctly until 3pm, but if using the latest version this doesn't happen. It seems that the max property is being ignored for the latest version.
Including the links of jsfiddle for my code on the comments (since stackoverflow doesn't allow me to post many links because don't have enough reputation).
I was able to achieve what I wanted. In the end what I did was to create null data to fill this gap for the lunch break. Also, I created null data for the remaining data until 3pm, that way the x axis lines were drawn properly: https://jsfiddle.net/K4Cj6/201/:
[1504528800000,null,null,null,null]
Thanks anyway guys =)

Highcharts: zooming doesn't show full visible series

When I zoom in on a series in highcharts, I've noticed that the first visible point of the series is where it starts to draw. This means that if the only point in the visible zoomed area is in the middle, then the line for that series only starts to draw in the middle of the window. Is there a way to make Highcharts render the previous value so that it does not "cut off" the previous values of the graph?
Before, zoomed out:
After, zoomed in (problem):
Desired:
I have tried setting cropThreshold and connectNulls (just in case) among other tweaks with no luck. Any suggestions?

Shinobi Charts iOS - Rotate Pie Chart by code

I am displaying pie chart and drawing labels outside of chart itself. Sometimes I must display odd data, that one point takes up 90% of chart so the rest must "mash up" into remaining 10% of the chart. Everything is okay, but the labels (slice names) are also "mashing up". So I implemented mechanism that "sorts out" those labels not to collide with each other. Now I have a "word cloud" above my chart, since the biggest slice is always facing down, leaving all other slices facing up. That is my problem: I want to rotate the chart so that the biggest value data point would be facing left (leaving me right side of chart for labels).
So my question is:
How I could rotate pie chart around its center by code?
And rotating whole chart view is not an option since labels must remain horizontal.
So i found the solution myself:
you can use this code:
[(SChartDonutSeries*)[[chart series] firstObject] setRotation:-1.570];
To rotate first (the only in my case) DonutSerie by approx -90 degrees with this line of code. I use it in this delegate method:
sChartRenderFinished

Core Plot: Pinch to change x axis range

So I have a simple line XY Graph with integer values on the Y axis and dates on the X axis. What I would be like to be able to do is do a horizontal two-finger pinch and adjust the range dynamically. Eg, pinching in would give you a bigger range (mental model being that you're setting the start and end date shown to be further apart) and then pinching out would give you smaller time window.
Is there some stuff built in for this already? Reasonably new to CorePlot and the default finger stuff just zooms the graph itself, none of the values.
Would I need to put a gesture recgoniser on it? or does coreplot have stuff build into it for this?
Cheers
This is how the built-in zoom features work. Use a plot space delegate to monitor changes to the plot space while zooming and make changes to the axis appearance as needed based on the changes. See my answer to your other question for more info.

Resources