I am using Highcharts with datetime type xAxis and irregular timestamped data.
Is there any possibility to enforce range on the axis? Currently, even if I set min and max, based on data bounds, Highchart tends to determine x axis range based on some internal algorithm, showing i.e. more than 6 weeks, even if data is limited to one month only. This effects in "blank margins".
Related
I have a use case where the client needs to see the previous date ranges stats overlaid on the current date range. This will allow them to easily compare current vs previous performance.
To do this I'm adding another series to the charts and retrieving the previous periods data. Previously, we then set the tooltip for the X value which was the current dates. I'm now needing to modify the tooltip to show the correct date value for each series such that a previous periods data point tooltip might look like:
12/1 : $4432.00
and the current periods data point:
1/1 : $21321.12
However it seems the charts are only capable of a single tooltip formatter instead of a per series formatter. If I continue to use the X axes label it will display the incorrect date on the previous periods data points. Using the above example would come out with 1/1 for the previous point:
1/1 : $4432.00
Is there a method by which I can set a tooltip format per series? Is there also any means by which we can modify and extend the underlying Highcharts?
I've found one solution for this function. Create a new XAxis and assign it to the Series.
XAxis xAxis = new XAxis();
xAxis.setCategories(categories);
xAxis.setOpposite(true);
configuration.addxAxis(xAxis);
series.setxAxis(1);
By adding the new XAxis the tooltip formatter can you use the same logic but receive different values depending on which axes the series is attached to.
I found setting the X axis by Integer a bit odd though. It should take the object imo but I suppose it needs to know which axis in the configuration's array to assign it to.
This solves the use case I have but won't be a solution if there are more than 2 axes to label.
To assure time continuity, I convert NSDates of a time series into time interval, and use for scatterplot or bar chart. The problem now is that Saturdays and Sundays are also included in X axis scale.
I wonder if it is possible to excludes weekends from the axis scale, making Monday date a following day of Friday, while still sticking to the use of time interval.
I could use custom labeling, but my time series does not include all weekdays, and I still want all weekdays to be shown even if not include in the time series.
Thanks
Core Plot plot ranges always cover a continuous range of values. To cut out the weekends, you'll need to define a mapping between dates and the linear time scale of the plot that excludes the weekend dates. The mapping should be defined both ways (date to plot value and plot value to date) so you can label the axis.
I have a simple column chart where the yAxis series data contains numeric strings in the millions and tens of millions. The chart therefore displays the graph numbers like this: "12.5M"(on the side of the grid) and in the points tooltip it is being displayed with a decimal point at the end. How do I make the data be shown in the thousands with commas? Will the chart be adjusted automatically to display more grid lines and raise the columns higher? Thanks a lot in advance.
I would have added an image, however it seems that that requires more reputation points. Sorry. Here's a link to it Screenshot
1) you can change the formatting of the axis labels by setting your own format with the formatter function
http://api.highcharts.com/highcharts#yAxis.labels.formatter
2) you can change the number of ticks by setting a tickInterval or tickPixel interval setting
http://api.highcharts.com/highcharts#yAxis.tickInterval
http://api.highcharts.com/highcharts#yAxis.tickPixelInterval
3) You can change how much extra space is added at the top/how many ticks there are, in part, by setting the maxPadding setting to 0
http://api.highcharts.com/highcharts#yAxis.maxPadding
When you have a small chart like the one you posted, Highcharts will often have trouble adapting its normal tick pattern, and you will often end up with just a min and max tick by default.
It's pretty easy to work these setting to get what you need though.
I was trying candlestick chart using highchart ( highstock ) and find out that when I increase/decrease Navigator in candlestick chart the width of candlestick get changed. Sometime it display high, open, close and low for one hour interval whereas sometime it is displaying for month. I would like to grab these dynamically changed candlestick width ( not the pixel width but the real time interval) and display them in the chart title. Is there anyway I can get these information and update them dynamically in chart subtitle?
http://www.highcharts.com/stock/demo/candlestick
Thank You
What you are seeing are the effects of plotOptions.series.dataGrouping (API Reference) where the data is grouped and values are approximated to display the data faster. If you look at the example for units on the above linked page you'll find that you can determine and set what those groupings are. The grouping isn't truly dynamic, it's predefined.
I am trying to use the highstock graph. I want to update the xAxis labels according to the range which is selected from the rangeselector. eg. if it's a 1-year graph, i want the ticks to be at the end of each month with labels as Jan-12,Feb-12 etc.(by default it shows each month as the beginning of that month). And if it's a monthly graph i want the labels to be positioned at each friday ie. at an interval of 7 days.
Is there a way i can dynamically change which labels are displayed on the axis based on the extremes?
You can use tickPositioner (http://api.highcharts.com/highcharts#xAxis.tickPositioner) or formatter to change labels name http://api.highcharts.com/highcharts#xAxis.labels.formatter