Related
Today is Nov 24th, 2020. I'm using this API:
https://developers.google.com/youtube/analytics/reference/reports/query.
I set the query parameters as:
endDate=2020-11-24 (today),
startDate=2020-11-20 (4 days ago),
ids=channel==MINE,
dimensions=day,
sort=day,
metrics=views.
This is what I get in return:
{
"kind": "youtubeAnalytics#resultTable",
"columnHeaders": [
{
"name": "day",
"columnType": "DIMENSION",
"dataType": "STRING"
},
{
"name": "views",
"columnType": "METRIC",
"dataType": "INTEGER"
}
],
"rows": [
[
"2020-11-20",
20
],
[
"2020-11-21",
23
]
]
}
As you can see, the data is missing for the dates 2020-11-22, 2020-11-23, and 2020-11-24.
I have developed an F# REST service framework which has recently gone into production usage, and one of the follow-up tools I'm working on is an automatic OpenAPI spec generator. The generator uses the FSharp.Compiler.Services library to examine each function exposed as a service entry point and generate the API spec, including schemas for each parameter. These parameters are often single-case union types which use a special rules computation expression to define validation rules, like the following:
type AccoutNubmerValidationError =
| AccountNumberMustBeTenDigitsLong of string
| AccountNumberMustBeNumerical of string
/// Account Number must be a 10-digit numerical string
[<Struct; Validated>] type AccoutNumber = private AccountNumber of string
module AccountNumber =
let create : string -> Result<AccountNumber, AccountNumberValidationError> =
rules {
rule (Rules.length 10) AccountNumberBeTenDigitsLong
rule (Rules.pattern "^[\d]{10}$") AccountNumberMustBeNumerical
}
I would like to parse each rule in the computation expression (which is a CustomOperation on the RulesBuilder class) so I can generate the correct values for length, pattern, etc. on the OpenApi schema for AccountNumber. While I can identify the correct binding and I have the FSharpExpr for the body, I haven't figured out exactly what I would need to do to parse that expression and extract the values for each rule.
If there is any documentation available on how to parse the bodies of computation expressions using F# Compiler Services, I haven't yet been able to find it. Does anyone have any experience they can share to help me figure it out?
EDIT
I received a close vote for 'asking for a tutorial', so I want to clarify my problem. I have an instance of an FSharpMemberOrFunctionOrValue for the create binding in the example above, as well as an FSharpExpr for the body of the expression. The expression looks something like this (represented as JSON to make it readable):
{
"Type": "FSharpImplementationFileDeclaration.MemberOrFunctionOrValue",
"Range": {
"StartLine": 15,
"StartCol": 4,
"EndLine": 15,
"EndCol": 9
},
"Properties": [
[
"v",
"val create"
],
[
"vs",
[]
]
],
"Childs": [
{
"Type": "BasicPatterns.Application",
"Range": {
"StartLine": 15,
"StartCol": 4,
"EndLine": 15,
"EndCol": 9
},
"Properties": [],
"Childs": [
{
"Type": "BasicPatterns.Lambda",
"Range": {
"StartLine": 15,
"StartCol": 4,
"EndLine": 15,
"EndCol": 9
},
"Properties": [
[
"lambdaVar",
"val builder#"
]
],
"Childs": [
{
"Type": "BasicPatterns.Call",
"Range": {
"StartLine": 17,
"StartCol": 8,
"EndLine": 17,
"EndCol": 64
},
"Properties": [
[
"memberOrFunc",
"member Require"
],
[
"typeArg2",
"type Microsoft.FSharp.Core.string"
]
],
"Childs": [
{
"Type": "BasicPatterns.Value",
"Range": {
"StartLine": 17,
"StartCol": 8,
"EndLine": 17,
"EndCol": 64
},
"Properties": [
[
"valueToGet",
"val builder#"
]
],
"Childs": []
},
{
"Type": "BasicPatterns.Call",
"Range": {
"StartLine": 16,
"StartCol": 8,
"EndLine": 16,
"EndCol": 63
},
"Properties": [
[
"memberOrFunc",
"member Require"
],
[
"typeArg2",
"type Microsoft.FSharp.Core.string"
]
],
"Childs": [
{
"Type": "BasicPatterns.Value",
"Range": {
"StartLine": 16,
"StartCol": 8,
"EndLine": 16,
"EndCol": 63
},
"Properties": [
[
"valueToGet",
"val builder#"
]
],
"Childs": []
},
{
"Type": "BasicPatterns.Call",
"Range": {
"StartLine": 16,
"StartCol": 8,
"EndLine": 16,
"EndCol": 63
},
"Properties": [
[
"memberOrFunc",
"member Yield"
],
[
"typeArg2",
"type Microsoft.FSharp.Core.obj * Microsoft.FSharp.Core.string"
]
],
"Childs": [
{
"Type": "BasicPatterns.Value",
"Range": {
"StartLine": 16,
"StartCol": 8,
"EndLine": 16,
"EndCol": 63
},
"Properties": [
[
"valueToGet",
"val builder#"
]
],
"Childs": []
},
{
"Type": "BasicPatterns.Const",
"Range": {
"StartLine": 16,
"StartCol": 8,
"EndLine": 16,
"EndCol": 63
},
"Properties": [
[
"constType",
"type Microsoft.FSharp.Core.unit"
],
[
"constValueObj",
null
]
],
"Childs": []
}
]
},
{
"Type": "BasicPatterns.Call",
"Range": {
"StartLine": 16,
"StartCol": 17,
"EndLine": 16,
"EndCol": 32
},
"Properties": [
[
"memberOrFunc",
"val raise"
],
[
"typeArg2",
"type Microsoft.FSharp.Core.obj"
]
],
"Childs": [
{
"Type": "BasicPatterns.Const",
"Range": {
"StartLine": 16,
"StartCol": 17,
"EndLine": 16,
"EndCol": 32
},
"Properties": [
[
"constType",
"type Microsoft.FSharp.Core.int32"
],
[
"constValueObj",
1
]
],
"Childs": []
}
]
},
{
"Type": "BasicPatterns.Const",
"Range": {
"StartLine": 16,
"StartCol": 34,
"EndLine": 16,
"EndCol": 63
},
"Properties": [
[
"constType",
"type Microsoft.FSharp.Core.string"
],
[
"constValueObj",
"Must be 10 digits in length"
]
],
"Childs": []
}
]
},
{
"Type": "BasicPatterns.Call",
"Range": {
"StartLine": 17,
"StartCol": 17,
"EndLine": 17,
"EndCol": 43
},
"Properties": [
[
"memberOrFunc",
"val raise"
],
[
"typeArg2",
"type Microsoft.FSharp.Core.obj"
]
],
"Childs": [
{
"Type": "BasicPatterns.Const",
"Range": {
"StartLine": 17,
"StartCol": 17,
"EndLine": 17,
"EndCol": 43
},
"Properties": [
[
"constType",
"type Microsoft.FSharp.Core.int32"
],
[
"constValueObj",
1
]
],
"Childs": []
}
]
},
{
"Type": "BasicPatterns.Const",
"Range": {
"StartLine": 17,
"StartCol": 45,
"EndLine": 17,
"EndCol": 64
},
"Properties": [
[
"constType",
"type Microsoft.FSharp.Core.string"
],
[
"constValueObj",
"Must be numerical"
]
],
"Childs": []
}
]
}
]
},
{
"Type": "BasicPatterns.Call",
"Range": {
"StartLine": 15,
"StartCol": 4,
"EndLine": 15,
"EndCol": 9
},
"Properties": [
[
"memberOrFunc",
"val rules"
]
],
"Childs": []
}
]
}
]
}
The problem is, I don't even see a reference to Rules.length or Rules.pattern in this expression tree. Presumably, this must be because I'm creating some intermediate partially-applied function that's represented elsewhere in the expression tree for the program. Is there a deterministic way to identify which portions of the expression tree I need to navigate and then find the actual constant values used in the partially-applied functions so that I can reliably use them programmatically?
I have a timeseries data which I am trying to display with Highstocks:
Here is the data:
{
"title": {
"text": "My Graph"
},
"series": [
[
{
"name": "Future Index Longs",
"data": [
[
"2019-02-05",
104516
],
[
"2019-02-06",
127260
],
[
"2019-02-07",
156291
],
[
"2019-02-08",
167567
]
]
}
],
[
{
"name": "Future Index Longs",
"data": [
[
"2019-02-05",
21
],
[
"2019-02-06",
0
],
[
"2019-02-07",
1263
],
[
"2019-02-08",
12
]
]
}
],
[
{
"name": "Future Index Longs",
"data": [
[
"2019-02-05",
33873
],
[
"2019-02-06",
61093
],
[
"2019-02-07",
43125
],
[
"2019-02-08",
41928
]
]
}
],
[
{
"name": "Future Index Longs",
"data": [
[
"2019-02-05",
47542
],
[
"2019-02-06",
55084
],
[
"2019-02-07",
75256
],
[
"2019-02-08",
77786
]
]
}
],
[
{
"name": "Future Index Longs",
"data": [
[
"2019-02-05",
185952
],
[
"2019-02-06",
243437
],
[
"2019-02-07",
275935
],
[
"2019-02-08",
287293
]
]
}
]
]
}
The graph is empty and no data is displayed. What am I doing wrong?
Sorry to add this filler here but I am required to add more text to post this question and since this is a pretty simple question, I don't have much to add.
You have the wrong format on your series, it should be an array of objects.
Like this: series: [{ ... }, { ... }]
Check this fiddle: https://jsfiddle.net/wg1vnyzp/1/
To have a chart with datetime axes in Highcharts you have to pass the X value as the timestamp in milliseconds since 1970.
Highstock example:
https://jsfiddle.net/BlackLabel/f0rsz6cd/1/
Note that in Highcharts you have to define xAxis.type as datetime like that:
xAxis: {
type: 'datetime'
}
Highcharts demo:
https://jsfiddle.net/BlackLabel/kas2oywp/
API reference:
https://api.highcharts.com/highcharts/series.line.data.x
https://api.highcharts.com/highcharts/xAxis.type
I'm using flocker to persist and migrate docker containers data through ZfS Dataset backend.
docker run -v test:/data --volume-driver flocker busybox
sh -c "echo hello world > /data/file.txt"
I had this error for a week:
Unable to find image 'busybox:latest' locally latest: Pulling from
library/busybox 583635769552: Pull complete b175bcb79023: Pull
complete Digest:
sha256:c1bc9b4bffe665bf014a305cc6cf3bca0e6effeb69d681d7a208ce741dad58e0
Status: Downloaded newer image for busybox:latest Error response from
daemon: Cannot start container
128ddff1c0e9d6740c23b2f475b14206775a131878b4ed725a3280e22de79666:
Timed out waiting for dataset to mount...
Any help would be appreciated.
flocker-docker-plugin.log
{
"task_uuid": "4001196a-902c-4139-8b4f-e217490242ab",
"error": true,
"timestamp": 1459172727.570846,
"message": "Unhandled Error\nTraceback (most recent call last):\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/dockerplugin/_script.py\", line 93, in docker_plugin_main\n options=DockerPluginOptions()).main()\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/common/script.py\", line 294, in main\n self._react(run_and_log, [], _reactor=self._reactor)\n File \"/opt/flocker/local/lib/python2.7/site-packages/twisted/internet/task.py\", line 882, in react\n finished = main(_reactor, *argv)\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/common/script.py\", line 282, in run_and_log\n d = maybeDeferred(self.script.main, reactor, options)\n--- <exception caught here> ---\n File \"/opt/flocker/local/lib/python2.7/site-packages/twisted/internet/defer.py\", line 150, in maybeDeferred\n result = f(*args, **kw)\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/dockerplugin/_script.py\", line 71, in main\n certificates_path.child(b\"plugin.key\"))\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/apiclient/_client.py\", line 592, in __init__\n cert_path, key_path)\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/ca/_validation.py\", line 137, in treq_with_authentication\n user_credential = UserCredential.from_files(user_cert_path, user_key_path)\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/ca/_ca.py\", line 371, in from_files\n certificate = load_certificate_file(certificate_path)\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/ca/_ca.py\", line 232, in load_certificate_file\n e.filename, code, failure\nflocker.ca._ca.PathError: Certificate file could not be opened. No such file or directory /etc/flocker/plugin.crt\n",
"message_type": "twisted:log",
"task_level": [
1
]
}
{
"task_uuid": "846b9f01-f618-4723-bf9e-2ce7ac6b79c9",
"error": true,
"timestamp": 1459172727.57451,
"message": "main function encountered error\nTraceback (most recent call last):\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/dockerplugin/_script.py\", line 93, in docker_plugin_main\n options=DockerPluginOptions()).main()\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/common/script.py\", line 294, in main\n self._react(run_and_log, [], _reactor=self._reactor)\n File \"/opt/flocker/local/lib/python2.7/site-packages/twisted/internet/task.py\", line 882, in react\n finished = main(_reactor, *argv)\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/common/script.py\", line 282, in run_and_log\n d = maybeDeferred(self.script.main, reactor, options)\n--- <exception caught here> ---\n File \"/opt/flocker/local/lib/python2.7/site-packages/twisted/internet/defer.py\", line 150, in maybeDeferred\n result = f(*args, **kw)\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/dockerplugin/_script.py\", line 71, in main\n certificates_path.child(b\"plugin.key\"))\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/apiclient/_client.py\", line 592, in __init__\n cert_path, key_path)\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/ca/_validation.py\", line 137, in treq_with_authentication\n user_credential = UserCredential.from_files(user_cert_path, user_key_path)\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/ca/_ca.py\", line 371, in from_files\n certificate = load_certificate_file(certificate_path)\n File \"/opt/flocker/local/lib/python2.7/site-packages/flocker/ca/_ca.py\", line 232, in load_certificate_file\n e.filename, code, e file could nfailure\nflocker.ca._ca.PathError: Certificatot be opened. No such file or directory /etc/flocker/plugin.crt\n",
"message_type": "twisted:log",
"task_level": [
1
]
}{
"task_uuid": "7aab456b-a754-4160-8bcb-0b618a63ecda",
"error": false,
"timestamp": 1459172727.575473,
"message": "Main loop terminated.",
"message_type": "twisted:log",
"task_level": [
1
]
}{
"task_uuid": "5b490165-8eb1-4755-9c87-1b49f00bc700",
"error": false,
"timestamp": 1459172728.921761,
"message": "Log opened.",
"message_type": "twisted:log",
"task_level": [
1
]
}
flocker-dataset-agent.log
{
"task_uuid": "e0a6549f-7515-427f-abb6-b31379895bde",
"cluster_state": {
"node_uuid_to_era": {
"values": [
[
{
"hex": "e4b23086-3d3e-44c4-acc4-8b5d31c8fc9b",
"$__class__$": "UUID"
},
{
"hex": "c1ccd75f-14c4-4e33-a9a9-b6ea876c5a05",
"$__class__$": "UUID"
}
],
[
{
"hex": "70f6f5dd-378c-4913-8b2f-0b0f1f55f0a8",
"$__class__$": "UUID"
},
{
"hex": "f824f593-8723-47f3-8605-a45b2262b268",
"$__class__$": "UUID"
}
]
],
"$__class__$": "PMap"
},
"nodes": [
{
"paths": {
"values": [
[
"7645c292-5329-4aa3-b606-981c2f4e4892",
{
"path": "/flocker/55ab515f-43eb-488b-b3a3-e65fa5c62249.default.7645c292-5329-4aa3-b606-981c2f4e4892",
"$__class__$": "FilePath"
}
]
],
"$__class__$": "PMap"
},
"uuid": {
"hex": "e4b23086-3d3e-44c4-acc4-8b5d31c8fc9b",
"$__class__$": "UUID"
},
"$__class__$": "NodeState",
"hostname": "192.168.224.7",
"devices": {
"values": [
],
"$__class__$": "PMap"
},
"applications": [
],
"manifestations": {
"values": [
[
"7645c292-5329-4aa3-b606-981c2f4e4892",
{
"dataset": {
"deleted": false,
"dataset_id": "7645c292-5329-4aa3-b606-981c2f4e4892",
"metadata": {
"values": [
],
"$__class__$": "PMap"
},
"maximum_size": 80530636800,
"$__class__$": "Dataset"
},
"primary": true,
"$__class__$": "Manifestation"
}
]
],
"$__class__$": "PMap"
}
},
{
"paths": {
"values": [
],
"$__class__$": "PMap"
},
"uuid": {
"hex": "70f6f5dd-378c-4913-8b2f-0b0f1f55f0a8",
"$__class__$": "UUID"
},
"$__class__$": "NodeState",
"hostname": "192.168.224.89",
"devices": {
"values": [
],
"$__class__$": "PMap"
},
"applications": [
],
"manifestations": {
"values": [
],
"$__class__$": "PMap"
}
}
],
"nonmanifest_datasets": {
"values": [
],
"$__class__$": "PMap"
},
"$__class__$": "DeploymentState"
},
"action_type": "flocker:agent:converge",
"desired_configuration": {
"persistent_state": {
"blockdevice_ownership": {
"values": [
],
"$__class__$": "PMap"
},
"$__class__$": "PersistentState"
},
"nodes": [
{
"applications": [
],
"manifestations": {
"values": [
[
"7645c292-5329-4aa3-b606-981c2f4e4892",
{
"dataset": {
"deleted": false,
"dataset_id": "7645c292-5329-4aa3-b606-981c2f4e4892",
"metadata": {
"values": [
[
"name",
"apples"
]
],
"$__class__$": "PMap"
},
"maximum_size": 80530636800,
"$__class__$": "Dataset"
},
"primary": true,
"$__class__$": "Manifestation"
}
]
],
"$__class__$": "PMap"
},
"uuid": {
"hex": "70f6f5dd-378c-4913-8b2f-0b0f1f55f0a8",
"$__class__$": "UUID"
},
"$__class__$": "Node"
},
{
"applications": [
],
"manifestations": {
"values": [
],
"$__class__$": "PMap"
},
"uuid": {
"hex": "e4b23086-3d3e-44c4-acc4-8b5d31c8fc9b",
"$__class__$": "UUID"
},
"$__class__$": "Node"
}
],
"leases": {
"values": [
],
"$__class__$": "PMap"
},
"$__class__$": "Deployment"
},
"timestamp": 1459176487.344602,
"action_status": "started",
"task_level": [
2,
1
]
}{
"timestamp": 1459176487.345864,
"task_uuid": "e0a6549f-7515-427f-abb6-b31379895bde",
"action_type": "flocker:agent:discovery",
"action_status": "started",
"task_level": [
2,
2,
1
]
}{
"fsm_next_state": "<ConvergenceLoopStates=CONVERGING>",
"task_level": [
3
],
"action_type": "fsm:transition",
"timestamp": 1459176487.348982,
"fsm_output": [
"<ConvergenceLoopOutputs=CLEAR_WAKEUP>",
"<ConvergenceLoopOutputs=CONVERGE>"
],
"task_uuid": "e0a6549f-7515-427f-abb6-b31379895bde",
"action_status": "succeeded"
}{
"task_uuid": "e0a6549f-7515-427f-abb6-b31379895bde",
"task_level": [
2,
2,
2
],
"action_type": "flocker:agent:discovery",
"timestamp": 1459176487.354977,
"state": "NodeLocalState(node_state=NodeState(applications=None, paths=UnicodeFilepathPMap({}), manifestations=UnicodeManifestationPMap({}), hostname=u'192.168.224.89', uuid=UUID('70f6f5dd-378c-4913-8b2f-0b0f1f55f0a8'), devices=UuidFilepathPMap({})))",
"action_status": "succeeded"
}{
"timestamp": 1459176487.356563,
"task_uuid": "e0a6549f-7515-427f-abb6-b31379895bde",
"message_type": "flocker:agent:converge:actions",
"task_level": [
2,
3
],
"calculated_actions": "NoOp(sleep=datetime.timedelta(0, 1))"
}{
"timestamp": 1459176487.356925,
"task_uuid": "e0a6549f-7515-427f-abb6-b31379895bde",
"action_type": "flocker:change:noop",
"action_status": "started",
"task_level": [
2,
4,
1
]
}{
"timestamp": 1459176487.357233,
"task_uuid": "e0a6549f-7515-427f-abb6-b31379895bde",
"action_type": "flocker:change:noop",
"action_status": "succeeded",
"task_level": [
2,
4,
2
]
}
The logs contain the following error:
_ca.PathError: Certificate file could not be opened. No such file or directory /etc/flocker/plugin.crt
This means you are missing the necessary certificates in order for the docker plugin to communicate correctly.
Please see the below link to create the necessary certificates.
https://docs.clusterhq.com/en/latest/docker-integration/generate-api-plugin.html
The problem is still there. The full discussion with Ryan can be found in this link:
https://groups.google.com/forum/#!topic/flocker-users/l5wCW-U1zKs
I've been working on older code written for Highcharts 2.x. It was working fine with 3.0 but when moving to 4.0 we saw this weird behavior:
http://jsfiddle.net/pfofo973/2/
As you can see, each period on the X axis has two stacked columns. The problem is that the first column isn't touching the X axis but has some kind of padding below it. Any idea how to correct that?
Thanks!
Here is the JS code:
chart = new Highcharts.Chart({
"chart": {
"renderTo": "container",
"defaultSeriesType": "column",
"marginTop": 100,
"marginBottom": 20,
"zoomType": "x",
"spacingRight": 20
},
"title": {
"text": "Activity Overview"
},
"subtitle": {
"text": "Grouped per week"
},
"xAxis": {
"type": "datetime",
"tickInterval": 604800000,
"tickWidth": 0,
"maxZoom": 1209600000,
"x": -30,
"labels": {}
},
"yAxis": [
{
"title": {
"text": "Days"
},
"endOnTick": false,
"maxPadding": 1,
"categories": [],
"index": 0
},
{
"gridLineWidth": 0,
"maxPadding": 1,
"categories": [],
"title": {
"text": "Number",
"style": {
"color": "#AA4643"
}
},
"labels": {
"style": {
"color": "#AA4643"
}
},
"opposite": true,
"index": 1
},
{
"gridLineWidth": 0,
"maxPadding": 0.8,
"endOnTick": false,
"lineWidth": 0,
"categories": [],
"opposite": true,
"tickLength": 0,
"max": 300,
"title": {
"text": ""
},
"labels": {
"text": ""
},
"index": 2
},
{
"gridLineWidth": 0,
"endOnTick": false,
"minPadding": 6,
"maxPadding": 0.5,
"lineWidth": 0,
"opposite": true,
"tickLength": 0,
"max": 100,
"min": 50,
"categories": [],
"title": {
"text": ""
},
"labels": {
"text": ""
},
"index": 3
}
],
"legend": {
"align": "left",
"verticalAlign": "top",
"y": 40,
"floating": true,
"borderWidth": 0
},
"tooltip": {
"shared": true,
"crosshairs": true,
"useHTML": true
},
"plotOptions": {
"column": {
"stacking": "normal"
},
"spline": {
"lineWidth": 1,
"dashStyle": "ShortDot",
"marker": {
"enabled": false,
"states": {
"hover": {
"enabled": true,
"radius": 4
}
}
}
}
},
"series": [
{
"name": "c1",
"stack": "survey",
"yAxis": 0,
"data": [
[
1406444400000,
7.3
],
[
1407049200000,
8.2
],
[
1407654000000,
7.8
],
[
1408258800000,
8.9
],
[
1408863600000,
6.7
],
[
1409468400000,
8
],
[
1410073200000,
8.4
],
[
1410678000000,
6.5
],
[
1411282800000,
6.6
],
[
1411887600000,
4.9
],
[
1412492400000,
1.8
]
],
"_colorIndex": 0
},
{
"name": "R1",
"stack": "survey",
"yAxis": 0,
"data": [
[
1406444400000,
4.2
],
[
1407049200000,
3.9
],
[
1407654000000,
3.9
],
[
1408258800000,
5.3
],
[
1408863600000,
3.2
],
[
1409468400000,
4.4
],
[
1410073200000,
3.1
],
[
1410678000000,
2.8
],
[
1411282800000,
2.8
],
[
1411887600000,
2.2
],
[
1412492400000,
0.9
]
],
"_colorIndex": 1
},
{
"name": "A1",
"stack": "survey",
"yAxis": 0,
"data": [
[
1406444400000,
1.8
],
[
1407049200000,
1.7
],
[
1407654000000,
1.5
],
[
1408258800000,
0.9
],
[
1408863600000,
1.7
],
[
1409468400000,
1.3
],
[
1410073200000,
1.3
],
[
1410678000000,
1.9
],
[
1411282800000,
1.2
],
[
1411887600000,
1.2
],
[
1412492400000,
0.4
]
],
"_colorIndex": 2
},
{
"name": "Nb R",
"type": "spline",
"color": "#AA4643",
"yAxis": 1,
"data": [
[
1406444400000,
3.7
],
[
1407049200000,
3.8
],
[
1407654000000,
4.1
],
[
1408258800000,
4.1
],
[
1408863600000,
3.6
],
[
1409468400000,
3.8
],
[
1410073200000,
3.8
],
[
1410678000000,
3.5
],
[
1411282800000,
3.8
],
[
1411887600000,
3.3
],
[
1412492400000,
3.1
]
],
"_symbolIndex": 0
},
{
"name": "P",
"stack": "rater",
"stacking": "percent",
"color": "#64E572",
"yAxis": 2,
"showInLegend": false,
"data": [
[
1406444400000,
34.55
],
[
1407049200000,
23.84
],
[
1407654000000,
38.58
],
[
1408258800000,
27.78
],
[
1408863600000,
34.07
],
[
1409468400000,
33.75
],
[
1410073200000,
38.71
],
[
1410678000000,
38.07
],
[
1411282800000,
31.35
],
[
1411887600000,
27.95
],
[
1412492400000,
30
]
]
},
{
"name": "S",
"stack": "rater",
"stacking": "percent",
"color": "#508432",
"yAxis": 2,
"showInLegend": false,
"data": [
[
1406444400000,
49.09
],
[
1407049200000,
49.01
],
[
1407654000000,
44.67
],
[
1408258800000,
50.56
],
[
1408863600000,
49.12
],
[
1409468400000,
51.25
],
[
1410073200000,
46.08
],
[
1410678000000,
42.64
],
[
1411282800000,
51.89
],
[
1411887600000,
56.52
],
[
1412492400000,
61.67
]
]
},
{
"name": "Su",
"stack": "rater",
"stacking": "percent",
"color": "#058DC7",
"yAxis": 2,
"showInLegend": false,
"data": [
[
1406444400000,
3.64
],
[
1407049200000,
4.64
],
[
1407654000000,
1.52
],
[
1408258800000,
7.22
],
[
1408863600000,
3.98
],
[
1409468400000,
3.75
],
[
1410073200000,
0.92
],
[
1410678000000,
3.55
],
[
1411282800000,
3.24
],
[
1411887600000,
2.48
],
[
1412492400000,
3.33
]
]
},
{
"name": "F",
"stack": "rater",
"stacking": "percent",
"color": "#24CBE5",
"yAxis": 2,
"showInLegend": false,
"data": [
[
1406444400000,
6.36
],
[
1407049200000,
10.6
],
[
1407654000000,
8.63
],
[
1408258800000,
6.11
],
[
1408863600000,
3.54
],
[
1409468400000,
3.13
],
[
1410073200000,
4.15
],
[
1410678000000,
5.08
],
[
1411282800000,
3.24
],
[
1411887600000,
6.83
],
[
1412492400000,
1.67
]
]
},
{
"name": "Pr",
"stack": "rater",
"stacking": "percent",
"color": "#DDDF00",
"yAxis": 2,
"showInLegend": false,
"data": [
[
1406444400000,
null
],
[
1407049200000,
4.64
],
[
1407654000000,
1.02
],
[
1408258800000,
null
],
[
1408863600000,
0.88
],
[
1409468400000,
3.13
],
[
1410073200000,
2.3
],
[
1410678000000,
null
],
[
1411282800000,
null
],
[
1411887600000,
1.24
],
[
1412492400000,
null
]
]
},
{
"name": "Cl",
"stack": "rater",
"stacking": "percent",
"color": "#ED5618",
"yAxis": 2,
"showInLegend": false,
"data": [
[
1406444400000,
null
],
[
1407049200000,
null
],
[
1407654000000,
1.02
],
[
1408258800000,
2.22
],
[
1408863600000,
0.44
],
[
1409468400000,
0.63
],
[
1410073200000,
0.92
],
[
1410678000000,
2.03
],
[
1411282800000,
1.08
],
[
1411887600000,
null
],
[
1412492400000,
null
]
]
},
{
"name": "Other",
"stack": "rater",
"stacking": "percent",
"color": "#FF9655",
"yAxis": 2,
"showInLegend": false,
"data": [
[
1406444400000,
6.36
],
[
1407049200000,
7.28
],
[
1407654000000,
4.57
],
[
1408258800000,
6.11
],
[
1408863600000,
7.96
],
[
1409468400000,
4.38
],
[
1410073200000,
6.91
],
[
1410678000000,
8.63
],
[
1411282800000,
9.19
],
[
1411887600000,
4.97
],
[
1412492400000,
3.33
]
]
},
{
"type": "line",
"name": "QoH",
"yAxis": 3,
"data": [
[
1406444400000,
96.5
],
[
1407049200000,
96.2
],
[
1407654000000,
94.7
],
[
1408258800000,
95.9
],
[
1408863600000,
95.1
],
[
1409468400000,
95.3
],
[
1410073200000,
96.3
],
[
1410678000000,
94.4
],
[
1411282800000,
96.6
],
[
1411887600000,
96.8
],
[
1412492400000,
98.1
]
],
"_colorIndex": 3,
"_symbolIndex": 1
}
]
});
This is because left y axis has 0 at that level.
To fix it you can set
startOnTick: false,
min: 0.5
for that axis.
Example: http://jsfiddle.net/pfofo973/4/