Does anyone know how to achieve this in coreplot?
I can get the graph with the solid green and red lines, without the shading. And I can get the semi-transparent shading, without the solid green and red line. I cannot seem to get both. :)
You should be able to do this with only two plots, one for each color. Set both the dataLineStyle and areaFill for each plot. Be sure to set the areaBaseValue for each plot at or below the bottom of the plot so the fill extends all the way down.
Related
enter image description here See in the example, when I don't have blue data then border-radius should come on black part in the last case. How I can achieve that??
Add border radius on black part if blue is hidden
The problem here is that setting a borderRadius for a single point is not possible according to Highchart's API. You can only set a borderRadius for the whole series. Splitting your points into several series would work, but I'm not sure if the whole demo still makes sense.
API reference: https://api.highcharts.com/highcharts/series.bar.borderRadius
I'm struggling to find a way to hide the bottom border of the dashed column. Is there a way to do this?
Also, is there a way to make the dashed border look always the same on the corners? It's arbitrary at the moment, which doesn't look great.
I have to do a line charts with threshold y=5 where y>5 circle color is green y<5 circle color is red and circle y=5 circle color is orange. Using simple threshold i can draw only 2 color in red and green but i can't do the orange one.
{
name: 'Series1',
data: [
{y:2},
{y:6},
{y:5},
{y:6.5},
{y:3},
{y:10}
],
threshold: 4,
negativeColor: "red",
color: "green"
}
How can i do my chart with 3 color circle using threshold? and how can i take color only in circle but grey in line connected circle?
To do what you are asking will require using multiple series, as in this example:
http://jsfiddle.net/jlbriggs/yHn2D/
You can use the linkedTo property to make them all sit under one legend entry.
However, this kind of display inevitably leads to a a cluttered, overly colored, hectic display.
My example, even though the colors are toned down, looks a bit circus-like.
I would be much more inclined to do soemthing like this:
http://jsfiddle.net/jlbriggs/yHn2D/3/
Highlight the target range on the chart, in a subtle manner. When looking at such a chart day after day, watching for data that is outside of the acceptable range, a chart like this will make it very easy to see.
A chart that highlights every singly point, with multiple colors, whether they require attention or not, will drown the important information in visual clutter.
FWIW.
I have chart showing time data. I have two points back in time which I need to "mark" in the chart.
I currently indicate these two by plotlines, but would like to show bar, with let's say green and blue bars showing the timespans (for example -13days from now with blue and -90days -> -13days with red).
I would use plotBands, but I can't specify their height and do not want to have them all over the chart.
Is there some way? I saw something about translating pixels and drawing rectangle, but wasn't able to make it work. Also - I zoom a lot in this chart.
You can use Renderer and add custom shape. In other cases, please attach mockup of your goal.
http://api.highcharts.com/highstock#Renderer
I've added a gradient to my scatter plot in the usual manner:
CPTFill areaGradientFill = [CPTFill fillWithGradient:areaGradient1];
boundLinePlot.areaFill = areaGradientFill;
boundLinePlot.areaBaseValue = 0;
Setting the minimum for the gradient is easy to do with the areaBaseValue property. However, the gradient will always stretch such that the entire range of color defined by areaGradient1 appears below the line plot.
What I'd like to do is set an absolute y-axis range (e.g., 0 to 100) and have the gradient always be set to that range. So if my line is at y=50, only the bottom 50% of the gradient would be rendered below the line. I thought setting boundLinePlot.areaBaseValue2 = 100; would do this, but it doesn't have any effect.
Does CorePlot support this? If not, what's the 'right' way to go about implementing it?
(This is my first question so apologies if I'm not clear. Be gentle. :) )
While there's no direct way to make this happen you could use a trick. Make your horizontal global range wider than what you would show normally and do not make the graph horizontally scrollable. Add a value to the graph in the hidden area that is always your maximum value. This will be filled with the full gradient. Other parts however will only get a partial gradient, depending on their height.
I found this trick by accident while looking at one of my graphs. Look:
The overview at the top shows where the big graph is currently (the green limit band). Now compare this with another part:
You can clearly see that the tip of the large value has a different gradient value as the tip of the smaller one.
You can use a "background limit band" to draw a fill at a certain size behind the plots, but that won't be clipped to the plot line.