Plotly Open Source Graphing Libraries
+ ++ Interactive charts and maps for Python, Javascript, and Dash. +
++ +
{text}
+ + {text} ++""" + + +def _make_html_text(accum, path, header, content): + """Make text of example.""" + # columns = "twelve" if "horizontal" in header.get("arrangement", "") else "six" + markdown_content = markdown(header.get("markdown_content", "")) + page_content = ( + HTML_TEXT_PAGE_CONTENT.format(text=escape(content)) if content else "" + ) + description = header.get("description", "") + description = HTML_TEXT_DESCRIPTION.format(text=description) if description else "" + accum.append( + HTML_TEXT.format( + markdown_content=markdown_content, + page_content=page_content, + description=description, + ) + ) + + +MYDIV_D3 = "\n\t<script src='https://cdnjs.cloudflare.com/ajax/libs/d3/3.5.17/d3.min.js'></script>" +MYDIV_MATHJAX = "\n\t<script src='//cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=TeX-MML-AM_CHTML'></script>" + +MYDIV = """\ + + + +""" + + +def _make_mydiv(args, accum, path, header, content, counter): + """Handle myDiv case.""" + if ("'myDiv'" not in content) and ('"myDiv"' not in content): + return False + + d3 = MYDIV_D3 if "d3." in content else "" + mathjax = MYDIV_MATHJAX if "remember to load MathJax.js" in content else "" + # columns = "twelve" if "horizontal" in header.get("arrangement", "") else "six" + name = header["name"] + unique_mydiv = f"myDiv_{counter}" + content_mydiv = content.replace("myDiv", unique_mydiv) + content_json = escape(json.dumps(content)) + + # Get JS Version + mkdocs_path = Path(__file__).resolve().parent.parent / "mkdocs.yml" + config = load_config(config_file=str(mkdocs_path)) + extra = config.get("extra", {}) + version = extra.get("js_version") + + accum.append( + MYDIV.format( + d3=d3, + mathjax=mathjax, + name=name, + unique_mydiv=unique_mydiv, + content_mydiv=content_mydiv, + content_json=content_json, + jsversion=version, + ) + ) + + return True + + +PLOT_URL = """\ + {plot_url_img} + {plot_url_embed} +""" + +PLOT_URL_IMG = """\ +
(.+?).*{trace_name} trace is an object with the key "type" equal to "{trace_data_attributes_type}"
+ (i.e. {{"type": "{trace_data_attributes_type}"}}) and any of the keys listed below.
+ {parent_path.replace('-', '.')}\n"
+ )
+
+ if (key == "type") and (block == "data"):
+ accum.append("{escape(value.get('description'))}
\n") + + if _get(value, "role") == "object": + _reference_block_object( + args, src_path, accum, parent_link, parent_path, key, value + ) + + accum.append("{_bool_or_star(sub_value)}")
+ accum.append(f"{inner})\n")
+
+ elif _get(value, "valType") in {"number", "integer"}:
+ accum.append(f"{inner}Type: {_get(value, 'valType')}")
+ if _get(value, "arrayOk"):
+ accum.append(f" or array of {_get(value, 'valType')}s")
+ if _get(value, "min") and _get(value, "max"):
+ accum.append(
+ f" between or equal to {_get(value, 'min')} and {_get(value, 'max')}\n"
+ )
+ elif _get(value, "min"):
+ accum.append(f" greater than or equal to {_get(value, 'min')}\n")
+ elif _get(value, "max"):
+ accum.append(f" less than or equal to {_get(value, 'max')}\n")
+
+ elif _get(value, "valType") == "boolean":
+ accum.append(f"{inner}Type: {_get(value, 'valType')}")
+ if _get(value, "arrayOk"):
+ accum.append(f" or array of {_get(value, 'valType')}s")
+
+ elif _get(value, "valType") == "flaglist":
+ accum.append(f"{inner}Type: {_get(value, 'valType')} string.\n\n")
+ flags = _get(value, "flags")
+ if not flags:
+ print(f"no flags for flaglist {key} in {src_path}", file=sys.stderr)
+ return
+
+ accum.append(f"{inner}Any combination of ")
+ for i, f in enumerate(flags):
+ _comma(accum, i)
+ accum.append(_bool_or_star(f))
+ accum.append(" joined with a *+*\n")
+ accum.append(f"{inner}OR ")
+
+ extras = _get(value, "extras")
+ if extras:
+ for i, x in enumerate(extras):
+ _comma(accum, i)
+ accum.append(_bool_or_star(x))
+
+ accum.append(".\n\n")
+ accum.append(f"{inner}*{flags[0]}*, ")
+ accum.append(f"*{flags[1]}*, ")
+ accum.append(f"*{flags[0]}+{flags[1]}*, ")
+ if len(flags) > 2:
+ accum.append(f"*{flags[0]}+{flags[1]}+{flags[2]}*, ")
+ if extras:
+ accum.append(f"*{extras[0]}*")
+ accum.append("\n\n")
+
+ elif _get(value, "valType") == "data_array":
+ accum.append(f"{inner}Type: {_get(value, 'valType')}\n")
+
+ elif _get(value, "valType") == "info_array":
+ accum.append("{inner}Type: {{array}}\n")
+
+ elif _get(value, "valType") == "color":
+ accum.append(f"{inner}Type: {_get(value, 'valType')}")
+ if _get(value, "arrayOk"):
+ accum.append(f" or array of {_get(value, 'valType')}s")
+
+ elif _get(value, "valType") == "any":
+ accum.append(f"{inner}Type: number or categorical coordinate string\n")
+
+ elif _get(value, "valType") == "string":
+ if "src" in key:
+ return
+ accum.append(f"{inner}Type: string")
+ if _get(value, "arrayOk"):
+ accum.append(" or array of strings")
+
+ else:
+ accum.append(f"{inner}Type: {_get(value, 'valType')}\n")
+
+ if _get(value, "role") == "object":
+ if _get(value, "items"):
+ accum.append(f"{inner}Type: {{array}} of {{object}}s")
+ else:
+ accum.append(f"{inner}Type: {{object}}")
+
+
+def _reference_block_dflt(src_path, accum, key, value):
+ """Handle a default."""
+ outer = " " * 16
+ if _get(value, "valType") == "flaglist":
+ accum.append(
+ f"{outer}*{_get(value, 'dflt')}*\n"
+ )
+ else:
+ accum.append(f"{outer}")
+ if _get(value, "dflt") == "":
+ accum.append("**")
+ elif _get(value, "valType") == "colorscale":
+ temp = [f"[{', '.join(_str(d))}]" for d in _get(value, "dflt")]
+ accum.append(f"[{', '.join(temp)}]")
+ elif _get(value, "valType") in {"info_array", "colorlist"}:
+ accum.append(f"[{', '.join([_str(x) for x in _get(value, 'dflt')])}]")
+ elif (_get(value, "valType") in {"string", "color"}) or (
+ _get(value, "dflt") == "auto"
+ ):
+ accum.append(f"*{_get(value, 'dflt')}*")
+ elif (_get(value, "valType") == "enumerated") and (
+ _get(value, "dflt") not in {"true", "false"}
+ ):
+ accum.append(f"*{_get(value, 'dflt')}*")
+ else:
+ accum.append(_get(value, "dflt"))
+ accum.append("\n")
+
+
+def _reference_block_array(src_path, accum, key, value):
+ """Handle an array."""
+ outer = " " * 12
+ inner = " " * 16
+ accum.append(f"{outer}+ Interactive charts and maps for Python, Javascript, and Dash. +
+{{page.description}}
+ {% include layouts/dashplug.html %} +Plotly.addFrames
+plot_url: https://codepen.io/plotly/embed/wzGOgd/?height=500&theme-id=15263&default-tab=result
+language: plotly_js
+suite: animations
+order: 3
+sitemap: false
+arrangement: horizontal
+markdown_content: |
+ The above examples pass the data itself through the Plotly.animate command. You may instead predefine named frames through the Plotly.addFrames command. Then, instead of passing frames through `Plotly.animate`, you may simply refer to a frame by name.
+
+ Similar to traces, frames are assigned a serial index as they are added. Frames may be updated by passing an array of frame indices. For example, the command to update the frame with index 2 would be `Plotly.addFrames('myDiv', [{...}], [2])`. Frames can be similarly deleted with, for example, `Plotly.deleteFrames('myDiv', [2])`.
+
+ The following example uses frames together with an `updatemenu` for interactive transitions.
+---
+var frames = [
+ {name: 'sine', data: [{x: [], y: []}]},
+ {name: 'cosine', data: [{x: [], y: []}]},
+ {name: 'circle', data: [{x: [], y: []}]},
+];
+
+var n = 100;
+for (var i = 0; i < n; i++) {
+ var t = i / (n - 1) * 2 - 1;
+
+ // A sine wave:
+ frames[0].data[0].x[i] = t * Math.PI;
+ frames[0].data[0].y[i] = Math.sin(t * Math.PI);
+
+ // A cosine wave:
+ frames[1].data[0].x[i] = t * Math.PI;
+ frames[1].data[0].y[i] = Math.cos(t * Math.PI);
+
+ // A circle:
+ frames[2].data[0].x[i] = Math.sin(t * Math.PI);
+ frames[2].data[0].y[i] = Math.cos(t * Math.PI);
+}
+
+Plotly.newPlot('myDiv', [{
+ x: frames[0].data[0].x,
+ y: frames[0].data[0].y,
+ line: {simplify: false},
+}], {
+ xaxis: {range: [-Math.PI, Math.PI]},
+ yaxis: {range: [-1.2, 1.2]},
+ updatemenus: [{
+ buttons: [
+ {method: 'animate', args: [['sine']], label: 'sine'},
+ {method: 'animate', args: [['cosine']], label: 'cosine'},
+ {method: 'animate', args: [['circle']], label: 'circle'}
+ ]
+ }]
+}).then(function() {
+ Plotly.addFrames('myDiv', frames);
+});
diff --git a/docs/content/plotly_js/animations/animations/animations-frame-groups-and-animation-modes.html b/docs/content/plotly_js/animations/animations/animations-frame-groups-and-animation-modes.html
new file mode 100644
index 00000000000..2297f29b98d
--- /dev/null
+++ b/docs/content/plotly_js/animations/animations/animations-frame-groups-and-animation-modes.html
@@ -0,0 +1,94 @@
+---
+name: Frame Groups and Animation Modes
+plot_url: https://codepen.io/plotly/embed/rrZRmA/?height=500&theme-id=15263&default-tab=result
+language: plotly_js
+suite: animations
+order: 7
+sitemap: false
+arrangement: horizontal
+markdown_content: |
+ The following example combines many of these concepts to draw a glass filling with water.
+
+ The first row of buttons animates a different set of predefined frames by changing the second argument of `Plotly.animate`. Passing `null` or `undefined` animates all defined frames in sequence, while passing an array of strings (here, the frames in reverse) animates a specific sequence of frames. By passing a plain string (here, `lower` or `upper`), it filters the animated frames to those with a `group` property equal to that name. The stop button is accomplished by interrupting the current animation with an empty list of frames, therefore simply stopping the animation at the end of the current frame.
+
+ The second row of buttons animates all frames with different animation modes. The `mode` option defines whether an animation either interrupts or follows the current animation. `immediate` mode discards all queued frames and begins a new sequence immediately. The `next` mode is very similar but doesn't begin the new animation until the *end* of the current frame. Finally, `afterall` queues the new frames so that the new animation begins only after all previous animations have completed.
+---
+var i, j, t, x, y, name;
+var frames = [];
+var nFrames = 10;
+var n = 80;
+var reverseFrames = [];
+
+for (i = 0; i < nFrames; i++) {
+ var fill = 0.1 + 0.9 * i / (nFrames - 1);
+ x = [-1];
+ y = [0];
+
+ // A wave across the top:
+ for (j = 0; j < n; j++) {
+ t = j / (n - 1);
+ x.push(-1 - fill + (2 + 2 * fill) * t);
+ y.push(fill + 0.05 * Math.sin(t * Math.PI * 2 * i));
+ }
+
+ // Close the loop to draw the water:
+ x.push(1, -1);
+ y.push(0, 0);
+
+ // Choose a name:
+ name = 'frame' + i;
+
+ // Store it in an array so we can animate in reverse order:
+ reverseFrames.unshift(name);
+
+ // Create the frame:
+ frames.push({
+ name: name,
+ data: [{x: x, y: y}],
+ group: i < nFrames / 2 ? 'lower' : 'upper'
+ })
+}
+
+Plotly.newPlot('myDiv', [{
+ // Set up the initial water:
+ x: frames[0].data[0].x,
+ y: frames[0].data[0].y,
+ mode: 'lines',
+ fill: 'toself',
+ showlegend: false,
+ line: {simplify: false}
+}, {
+ // Draw a glass:
+ x: [-1, 1, 2.1, -2.1, -1],
+ y: [0, 0, 1.1, 1.1, 0],
+ mode: 'lines',
+ fill: 'toself',
+ showlegend: false,
+ fillcolor: 'rgba(0, 0, 0, 0.1)',
+ line: {color: 'rgba(100,100,100,0.2)'}
+}], {
+ xaxis: {range: [-3, 3]},
+ yaxis: {range: [-0.1, 1.5]}
+}).then(function() {
+ // Add the frames so we can animate them:
+ Plotly.addFrames('myDiv', frames);
+});
+
+// Stop the animation by animating to an empty set of frames:
+function stopAnimation () {
+ Plotly.animate('myDiv', [], {mode: 'next'});
+}
+
+function startAnimation (groupOrFrames, mode) {
+ Plotly.animate('myDiv', groupOrFrames, {
+ transition: {
+ duration: 500,
+ easing: 'linear'
+ },
+ frame: {
+ duration: 500,
+ redraw: false,
+ },
+ mode: mode
+ });
+}
diff --git a/docs/content/plotly_js/animations/animations/animations-gapminder.html b/docs/content/plotly_js/animations/animations/animations-gapminder.html
new file mode 100644
index 00000000000..9248dd7b7bf
--- /dev/null
+++ b/docs/content/plotly_js/animations/animations/animations-gapminder.html
@@ -0,0 +1,10 @@
+---
+name: Animating with a Slider
+language: plotly_js
+suite: animations
+order: 8
+sitemap: false
+arrangement: horizontal
+markdown_content: |
+ See [Adding Sliders to Animations](https://plotly.com/javascript/gapminder-example/).
+---
diff --git a/docs/content/plotly_js/animations/animations/animations-object-constancy.html b/docs/content/plotly_js/animations/animations/animations-object-constancy.html
new file mode 100644
index 00000000000..68aeb0c8797
--- /dev/null
+++ b/docs/content/plotly_js/animations/animations/animations-object-constancy.html
@@ -0,0 +1,41 @@
+---
+name: Object Constancy
+plot_url: https://codepen.io/plotly/embed/LRNaWw/?height=500&theme-id=15263&default-tab=result
+language: plotly_js
+suite: animations
+order: 6
+sitemap: false
+arrangement: horizontal
+markdown_content: |
+ For scatter traces, you may wish to retain a marker's identity as it is updated. If you include an array of string ids with the trace, the marker identity will be retained. By shuffling the ids, the example below shuffles the markers each time the button is pressed.
+---
+function shuffleInPlace(array) {
+ for (var i = array.length - 1; i > 0; i--) {
+ var j = Math.floor(Math.random() * (i + 1));
+ var temp = array[i];
+ array[i] = array[j];
+ array[j] = temp;
+ }
+}
+
+var ids = ['1', '2', '3', '4', '5', '6'];
+
+Plotly.newPlot('myDiv', [{
+ x: [1, 0.5, -0.5, -1, -0.5, 0.5],
+ y: [0, 0.866, 0.866, 0, -0.866, -0.866],
+ marker:{size:14,
+ color:['#631357', '#880E4F', '#AD1457',
+ '#F06292', '#F48FB1']},
+ ids: ids,
+ mode: 'markers'
+}], {
+ xaxis: {range: [-3, 3]},
+ yaxis: {range: [-2, 2]}
+});
+
+function animateShuffle() {
+ shuffleInPlace(ids);
+ Plotly.animate('myDiv', [{
+ data: [{ids: ids}]
+ }]);
+}
diff --git a/docs/content/plotly_js/animations/animations/gapminder-with-frames.json b/docs/content/plotly_js/animations/animations/gapminder-with-frames.json
new file mode 100644
index 00000000000..843dc88bad5
--- /dev/null
+++ b/docs/content/plotly_js/animations/animations/gapminder-with-frames.json
@@ -0,0 +1,8705 @@
+{
+ "data":[
+ {
+ "name":"Asia",
+ "text":[
+ "Afghanistan",
+ "Bahrain",
+ "Bangladesh",
+ "Cambodia",
+ "China",
+ "Hong Kong, China",
+ "India",
+ "Indonesia",
+ "Iran",
+ "Iraq",
+ "Israel",
+ "Japan",
+ "Jordan",
+ "Korea, Dem. Rep.",
+ "Korea, Rep.",
+ "Kuwait",
+ "Lebanon",
+ "Malaysia",
+ "Mongolia",
+ "Myanmar",
+ "Nepal",
+ "Oman",
+ "Pakistan",
+ "Philippines",
+ "Saudi Arabia",
+ "Singapore",
+ "Sri Lanka",
+ "Syria",
+ "Taiwan",
+ "Thailand",
+ "Vietnam",
+ "West Bank and Gaza",
+ "Yemen, Rep."
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 8425333,
+ 120447,
+ 46886859,
+ 4693836,
+ 556263527.999989,
+ 2125900,
+ 372000000,
+ 82052000,
+ 17272000,
+ 5441766,
+ 1620914,
+ 86459025,
+ 607914,
+ 8865488,
+ 20947571,
+ 160000,
+ 1439529,
+ 6748378,
+ 800663,
+ 20092996,
+ 9182536,
+ 507833,
+ 41346560,
+ 22438691,
+ 4005677,
+ 1127000,
+ 7982342,
+ 3661549,
+ 8550362,
+ 21289402,
+ 26246839,
+ 1030585,
+ 4963829
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 28.801,
+ 50.939,
+ 37.484,
+ 39.417,
+ 44,
+ 60.96,
+ 37.373,
+ 37.468,
+ 44.869,
+ 45.32,
+ 65.39,
+ 63.03,
+ 43.158,
+ 50.056,
+ 47.453,
+ 55.565,
+ 55.928,
+ 48.463,
+ 42.244,
+ 36.319,
+ 36.157,
+ 37.578,
+ 43.436,
+ 47.752,
+ 39.875,
+ 60.396,
+ 57.593,
+ 45.883,
+ 58.5,
+ 50.848,
+ 40.412,
+ 43.16,
+ 32.548
+ ],
+ "y":[
+ 779.4453145,
+ 9867.084765,
+ 684.2441716,
+ 368.4692856,
+ 400.448610699994,
+ 3054.421209,
+ 546.5657493,
+ 749.6816546,
+ 3035.326002,
+ 4129.766056,
+ 4086.522128,
+ 3216.956347,
+ 1546.907807,
+ 1088.277758,
+ 1030.592226,
+ 108382.3529,
+ 4834.804067,
+ 1831.132894,
+ 786.5668575,
+ 331,
+ 545.8657229,
+ 1828.230307,
+ 684.5971438,
+ 1272.880995,
+ 6459.554823,
+ 2315.138227,
+ 1083.53203,
+ 1643.485354,
+ 1206.947913,
+ 757.7974177,
+ 605.0664917,
+ 1515.592329,
+ 781.7175761
+ ]
+ },
+ {
+ "name":"Europe",
+ "text":[
+ "Albania",
+ "Austria",
+ "Belgium",
+ "Bosnia and Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Czech Republic",
+ "Denmark",
+ "Finland",
+ "France",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Serbia",
+ "Slovak Republic",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "United Kingdom"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 1282697,
+ 6927772,
+ 8730405,
+ 2791000,
+ 7274900,
+ 3882229,
+ 9125183,
+ 4334000,
+ 4090500,
+ 42459667,
+ 69145952,
+ 7733250,
+ 9504000,
+ 147962,
+ 2952156,
+ 47666000,
+ 413834,
+ 10381988,
+ 3327728,
+ 25730551,
+ 8526050,
+ 16630000,
+ 6860147,
+ 3558137,
+ 1489518,
+ 28549870,
+ 7124673,
+ 4815000,
+ 22235677,
+ 50430000
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 55.23,
+ 66.8,
+ 68,
+ 53.82,
+ 59.6,
+ 61.21,
+ 66.87,
+ 70.78,
+ 66.55,
+ 67.41,
+ 67.5,
+ 65.86,
+ 64.03,
+ 72.49,
+ 66.91,
+ 65.94,
+ 59.164,
+ 72.13,
+ 72.67,
+ 61.31,
+ 59.82,
+ 61.05,
+ 57.996,
+ 64.36,
+ 65.57,
+ 64.94,
+ 71.86,
+ 69.62,
+ 43.585,
+ 69.18
+ ],
+ "y":[
+ 1601.056136,
+ 6137.076492,
+ 8343.105127,
+ 973.5331948,
+ 2444.286648,
+ 3119.23652,
+ 6876.14025,
+ 9692.385245,
+ 6424.519071,
+ 7029.809327,
+ 7144.114393,
+ 3530.690067,
+ 5263.673816,
+ 7267.688428,
+ 5210.280328,
+ 4931.404155,
+ 2647.585601,
+ 8941.571858,
+ 10095.42172,
+ 4029.329699,
+ 3068.319867,
+ 3144.613186,
+ 3581.459448,
+ 5074.659104,
+ 4215.041741,
+ 3834.034742,
+ 8527.844662,
+ 14734.23275,
+ 1969.10098,
+ 9979.508487
+ ]
+ },
+ {
+ "name":"Africa",
+ "text":[
+ "Algeria",
+ "Angola",
+ "Benin",
+ "Botswana",
+ "Burkina Faso",
+ "Burundi",
+ "Cameroon",
+ "Central African Republic",
+ "Chad",
+ "Comoros",
+ "Congo, Dem. Rep.",
+ "Congo, Rep.",
+ "Cote d'Ivoire",
+ "Djibouti",
+ "Egypt",
+ "Equatorial Guinea",
+ "Eritrea",
+ "Ethiopia",
+ "Gabon",
+ "Gambia",
+ "Ghana",
+ "Guinea",
+ "Guinea-Bissau",
+ "Kenya",
+ "Lesotho",
+ "Liberia",
+ "Libya",
+ "Madagascar",
+ "Malawi",
+ "Mali",
+ "Mauritania",
+ "Mauritius",
+ "Morocco",
+ "Mozambique",
+ "Namibia",
+ "Niger",
+ "Nigeria",
+ "Reunion",
+ "Rwanda",
+ "Sao Tome and Principe",
+ "Senegal",
+ "Sierra Leone",
+ "Somalia",
+ "South Africa",
+ "Sudan",
+ "Swaziland",
+ "Tanzania",
+ "Togo",
+ "Tunisia",
+ "Uganda",
+ "Zambia",
+ "Zimbabwe"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 9279525,
+ 4232095,
+ 1738315,
+ 442308,
+ 4469979,
+ 2445618,
+ 5009067,
+ 1291695,
+ 2682462,
+ 153936,
+ 14100005,
+ 854885,
+ 2977019,
+ 63149,
+ 22223309,
+ 216964,
+ 1438760,
+ 20860941,
+ 420702,
+ 284320,
+ 5581001,
+ 2664249,
+ 580653,
+ 6464046,
+ 748747,
+ 863308,
+ 1019729,
+ 4762912,
+ 2917802,
+ 3838168,
+ 1022556,
+ 516556,
+ 9939217,
+ 6446316,
+ 485831,
+ 3379468,
+ 33119096,
+ 257700,
+ 2534927,
+ 60011,
+ 2755589,
+ 2143249,
+ 2526994,
+ 14264935,
+ 8504667,
+ 290243,
+ 8322925,
+ 1219113,
+ 3647735,
+ 5824797,
+ 2672000,
+ 3080907
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 43.077,
+ 30.015,
+ 38.223,
+ 47.622,
+ 31.975,
+ 39.031,
+ 38.523,
+ 35.463,
+ 38.092,
+ 40.715,
+ 39.143,
+ 42.111,
+ 40.477,
+ 34.812,
+ 41.893,
+ 34.482,
+ 35.928,
+ 34.078,
+ 37.003,
+ 30,
+ 43.149,
+ 33.609,
+ 32.5,
+ 42.27,
+ 42.138,
+ 38.48,
+ 42.723,
+ 36.681,
+ 36.256,
+ 33.685,
+ 40.543,
+ 50.986,
+ 42.873,
+ 31.286,
+ 41.725,
+ 37.444,
+ 36.324,
+ 52.724,
+ 40,
+ 46.471,
+ 37.278,
+ 30.331,
+ 32.978,
+ 45.009,
+ 38.635,
+ 41.407,
+ 41.215,
+ 38.596,
+ 44.6,
+ 39.978,
+ 42.038,
+ 48.451
+ ],
+ "y":[
+ 2449.008185,
+ 3520.610273,
+ 1062.7522,
+ 851.2411407,
+ 543.2552413,
+ 339.2964587,
+ 1172.667655,
+ 1071.310713,
+ 1178.665927,
+ 1102.990936,
+ 780.5423257,
+ 2125.621418,
+ 1388.594732,
+ 2669.529475,
+ 1418.822445,
+ 375.6431231,
+ 328.9405571,
+ 362.1462796,
+ 4293.476475,
+ 485.2306591,
+ 911.2989371,
+ 510.1964923,
+ 299.850319,
+ 853.540919,
+ 298.8462121,
+ 575.5729961,
+ 2387.54806,
+ 1443.011715,
+ 369.1650802,
+ 452.3369807,
+ 743.1159097,
+ 1967.955707,
+ 1688.20357,
+ 468.5260381,
+ 2423.780443,
+ 761.879376,
+ 1077.281856,
+ 2718.885295,
+ 493.3238752,
+ 879.5835855,
+ 1450.356983,
+ 879.7877358,
+ 1135.749842,
+ 4725.295531,
+ 1615.991129,
+ 1148.376626,
+ 716.6500721,
+ 859.8086567,
+ 1468.475631,
+ 734.753484,
+ 1147.388831,
+ 406.8841148
+ ]
+ },
+ {
+ "name":"Americas",
+ "text":[
+ "Argentina",
+ "Bolivia",
+ "Brazil",
+ "Canada",
+ "Chile",
+ "Colombia",
+ "Costa Rica",
+ "Cuba",
+ "Dominican Republic",
+ "Ecuador",
+ "El Salvador",
+ "Guatemala",
+ "Haiti",
+ "Honduras",
+ "Jamaica",
+ "Mexico",
+ "Nicaragua",
+ "Panama",
+ "Paraguay",
+ "Peru",
+ "Puerto Rico",
+ "Trinidad and Tobago",
+ "United States",
+ "Uruguay",
+ "Venezuela"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 17876956,
+ 2883315,
+ 56602560,
+ 14785584,
+ 6377619,
+ 12350771,
+ 926317,
+ 6007797,
+ 2491346,
+ 3548753,
+ 2042865,
+ 3146381,
+ 3201488,
+ 1517453,
+ 1426095,
+ 30144317,
+ 1165790,
+ 940080,
+ 1555876,
+ 8025700,
+ 2227000,
+ 662850,
+ 157553000,
+ 2252965,
+ 5439568
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 62.485,
+ 40.414,
+ 50.917,
+ 68.75,
+ 54.745,
+ 50.643,
+ 57.206,
+ 59.421,
+ 45.928,
+ 48.357,
+ 45.262,
+ 42.023,
+ 37.579,
+ 41.912,
+ 58.53,
+ 50.789,
+ 42.314,
+ 55.191,
+ 62.649,
+ 43.902,
+ 64.28,
+ 59.1,
+ 68.44,
+ 66.071,
+ 55.088
+ ],
+ "y":[
+ 5911.315053,
+ 2677.326347,
+ 2108.944355,
+ 11367.16112,
+ 3939.978789,
+ 2144.115096,
+ 2627.009471,
+ 5586.53878,
+ 1397.717137,
+ 3522.110717,
+ 3048.3029,
+ 2428.237769,
+ 1840.366939,
+ 2194.926204,
+ 2898.530881,
+ 3478.125529,
+ 3112.363948,
+ 2480.380334,
+ 1952.308701,
+ 3758.523437,
+ 3081.959785,
+ 3023.271928,
+ 13990.48208,
+ 5716.766744,
+ 7689.799761
+ ]
+ },
+ {
+ "name":"Oceania",
+ "text":[
+ "Australia",
+ "New Zealand"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 8691212,
+ 1994794
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 69.12,
+ 69.39
+ ],
+ "y":[
+ 10039.59564,
+ 10556.57566
+ ]
+ }
+ ],
+ "frames":[
+ {
+ "data":[
+ {
+ "name":"Asia",
+ "text":[
+ "Afghanistan",
+ "Bahrain",
+ "Bangladesh",
+ "Cambodia",
+ "China",
+ "Hong Kong, China",
+ "India",
+ "Indonesia",
+ "Iran",
+ "Iraq",
+ "Israel",
+ "Japan",
+ "Jordan",
+ "Korea, Dem. Rep.",
+ "Korea, Rep.",
+ "Kuwait",
+ "Lebanon",
+ "Malaysia",
+ "Mongolia",
+ "Myanmar",
+ "Nepal",
+ "Oman",
+ "Pakistan",
+ "Philippines",
+ "Saudi Arabia",
+ "Singapore",
+ "Sri Lanka",
+ "Syria",
+ "Taiwan",
+ "Thailand",
+ "Vietnam",
+ "West Bank and Gaza",
+ "Yemen, Rep."
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 8425333,
+ 120447,
+ 46886859,
+ 4693836,
+ 556263527.999989,
+ 2125900,
+ 372000000,
+ 82052000,
+ 17272000,
+ 5441766,
+ 1620914,
+ 86459025,
+ 607914,
+ 8865488,
+ 20947571,
+ 160000,
+ 1439529,
+ 6748378,
+ 800663,
+ 20092996,
+ 9182536,
+ 507833,
+ 41346560,
+ 22438691,
+ 4005677,
+ 1127000,
+ 7982342,
+ 3661549,
+ 8550362,
+ 21289402,
+ 26246839,
+ 1030585,
+ 4963829
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 28.801,
+ 50.939,
+ 37.484,
+ 39.417,
+ 44,
+ 60.96,
+ 37.373,
+ 37.468,
+ 44.869,
+ 45.32,
+ 65.39,
+ 63.03,
+ 43.158,
+ 50.056,
+ 47.453,
+ 55.565,
+ 55.928,
+ 48.463,
+ 42.244,
+ 36.319,
+ 36.157,
+ 37.578,
+ 43.436,
+ 47.752,
+ 39.875,
+ 60.396,
+ 57.593,
+ 45.883,
+ 58.5,
+ 50.848,
+ 40.412,
+ 43.16,
+ 32.548
+ ],
+ "y":[
+ 779.4453145,
+ 9867.084765,
+ 684.2441716,
+ 368.4692856,
+ 400.448610699994,
+ 3054.421209,
+ 546.5657493,
+ 749.6816546,
+ 3035.326002,
+ 4129.766056,
+ 4086.522128,
+ 3216.956347,
+ 1546.907807,
+ 1088.277758,
+ 1030.592226,
+ 108382.3529,
+ 4834.804067,
+ 1831.132894,
+ 786.5668575,
+ 331,
+ 545.8657229,
+ 1828.230307,
+ 684.5971438,
+ 1272.880995,
+ 6459.554823,
+ 2315.138227,
+ 1083.53203,
+ 1643.485354,
+ 1206.947913,
+ 757.7974177,
+ 605.0664917,
+ 1515.592329,
+ 781.7175761
+ ]
+ },
+ {
+ "name":"Europe",
+ "text":[
+ "Albania",
+ "Austria",
+ "Belgium",
+ "Bosnia and Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Czech Republic",
+ "Denmark",
+ "Finland",
+ "France",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Serbia",
+ "Slovak Republic",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "United Kingdom"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 1282697,
+ 6927772,
+ 8730405,
+ 2791000,
+ 7274900,
+ 3882229,
+ 9125183,
+ 4334000,
+ 4090500,
+ 42459667,
+ 69145952,
+ 7733250,
+ 9504000,
+ 147962,
+ 2952156,
+ 47666000,
+ 413834,
+ 10381988,
+ 3327728,
+ 25730551,
+ 8526050,
+ 16630000,
+ 6860147,
+ 3558137,
+ 1489518,
+ 28549870,
+ 7124673,
+ 4815000,
+ 22235677,
+ 50430000
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 55.23,
+ 66.8,
+ 68,
+ 53.82,
+ 59.6,
+ 61.21,
+ 66.87,
+ 70.78,
+ 66.55,
+ 67.41,
+ 67.5,
+ 65.86,
+ 64.03,
+ 72.49,
+ 66.91,
+ 65.94,
+ 59.164,
+ 72.13,
+ 72.67,
+ 61.31,
+ 59.82,
+ 61.05,
+ 57.996,
+ 64.36,
+ 65.57,
+ 64.94,
+ 71.86,
+ 69.62,
+ 43.585,
+ 69.18
+ ],
+ "y":[
+ 1601.056136,
+ 6137.076492,
+ 8343.105127,
+ 973.5331948,
+ 2444.286648,
+ 3119.23652,
+ 6876.14025,
+ 9692.385245,
+ 6424.519071,
+ 7029.809327,
+ 7144.114393,
+ 3530.690067,
+ 5263.673816,
+ 7267.688428,
+ 5210.280328,
+ 4931.404155,
+ 2647.585601,
+ 8941.571858,
+ 10095.42172,
+ 4029.329699,
+ 3068.319867,
+ 3144.613186,
+ 3581.459448,
+ 5074.659104,
+ 4215.041741,
+ 3834.034742,
+ 8527.844662,
+ 14734.23275,
+ 1969.10098,
+ 9979.508487
+ ]
+ },
+ {
+ "name":"Africa",
+ "text":[
+ "Algeria",
+ "Angola",
+ "Benin",
+ "Botswana",
+ "Burkina Faso",
+ "Burundi",
+ "Cameroon",
+ "Central African Republic",
+ "Chad",
+ "Comoros",
+ "Congo, Dem. Rep.",
+ "Congo, Rep.",
+ "Cote d'Ivoire",
+ "Djibouti",
+ "Egypt",
+ "Equatorial Guinea",
+ "Eritrea",
+ "Ethiopia",
+ "Gabon",
+ "Gambia",
+ "Ghana",
+ "Guinea",
+ "Guinea-Bissau",
+ "Kenya",
+ "Lesotho",
+ "Liberia",
+ "Libya",
+ "Madagascar",
+ "Malawi",
+ "Mali",
+ "Mauritania",
+ "Mauritius",
+ "Morocco",
+ "Mozambique",
+ "Namibia",
+ "Niger",
+ "Nigeria",
+ "Reunion",
+ "Rwanda",
+ "Sao Tome and Principe",
+ "Senegal",
+ "Sierra Leone",
+ "Somalia",
+ "South Africa",
+ "Sudan",
+ "Swaziland",
+ "Tanzania",
+ "Togo",
+ "Tunisia",
+ "Uganda",
+ "Zambia",
+ "Zimbabwe"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 9279525,
+ 4232095,
+ 1738315,
+ 442308,
+ 4469979,
+ 2445618,
+ 5009067,
+ 1291695,
+ 2682462,
+ 153936,
+ 14100005,
+ 854885,
+ 2977019,
+ 63149,
+ 22223309,
+ 216964,
+ 1438760,
+ 20860941,
+ 420702,
+ 284320,
+ 5581001,
+ 2664249,
+ 580653,
+ 6464046,
+ 748747,
+ 863308,
+ 1019729,
+ 4762912,
+ 2917802,
+ 3838168,
+ 1022556,
+ 516556,
+ 9939217,
+ 6446316,
+ 485831,
+ 3379468,
+ 33119096,
+ 257700,
+ 2534927,
+ 60011,
+ 2755589,
+ 2143249,
+ 2526994,
+ 14264935,
+ 8504667,
+ 290243,
+ 8322925,
+ 1219113,
+ 3647735,
+ 5824797,
+ 2672000,
+ 3080907
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 43.077,
+ 30.015,
+ 38.223,
+ 47.622,
+ 31.975,
+ 39.031,
+ 38.523,
+ 35.463,
+ 38.092,
+ 40.715,
+ 39.143,
+ 42.111,
+ 40.477,
+ 34.812,
+ 41.893,
+ 34.482,
+ 35.928,
+ 34.078,
+ 37.003,
+ 30,
+ 43.149,
+ 33.609,
+ 32.5,
+ 42.27,
+ 42.138,
+ 38.48,
+ 42.723,
+ 36.681,
+ 36.256,
+ 33.685,
+ 40.543,
+ 50.986,
+ 42.873,
+ 31.286,
+ 41.725,
+ 37.444,
+ 36.324,
+ 52.724,
+ 40,
+ 46.471,
+ 37.278,
+ 30.331,
+ 32.978,
+ 45.009,
+ 38.635,
+ 41.407,
+ 41.215,
+ 38.596,
+ 44.6,
+ 39.978,
+ 42.038,
+ 48.451
+ ],
+ "y":[
+ 2449.008185,
+ 3520.610273,
+ 1062.7522,
+ 851.2411407,
+ 543.2552413,
+ 339.2964587,
+ 1172.667655,
+ 1071.310713,
+ 1178.665927,
+ 1102.990936,
+ 780.5423257,
+ 2125.621418,
+ 1388.594732,
+ 2669.529475,
+ 1418.822445,
+ 375.6431231,
+ 328.9405571,
+ 362.1462796,
+ 4293.476475,
+ 485.2306591,
+ 911.2989371,
+ 510.1964923,
+ 299.850319,
+ 853.540919,
+ 298.8462121,
+ 575.5729961,
+ 2387.54806,
+ 1443.011715,
+ 369.1650802,
+ 452.3369807,
+ 743.1159097,
+ 1967.955707,
+ 1688.20357,
+ 468.5260381,
+ 2423.780443,
+ 761.879376,
+ 1077.281856,
+ 2718.885295,
+ 493.3238752,
+ 879.5835855,
+ 1450.356983,
+ 879.7877358,
+ 1135.749842,
+ 4725.295531,
+ 1615.991129,
+ 1148.376626,
+ 716.6500721,
+ 859.8086567,
+ 1468.475631,
+ 734.753484,
+ 1147.388831,
+ 406.8841148
+ ]
+ },
+ {
+ "name":"Americas",
+ "text":[
+ "Argentina",
+ "Bolivia",
+ "Brazil",
+ "Canada",
+ "Chile",
+ "Colombia",
+ "Costa Rica",
+ "Cuba",
+ "Dominican Republic",
+ "Ecuador",
+ "El Salvador",
+ "Guatemala",
+ "Haiti",
+ "Honduras",
+ "Jamaica",
+ "Mexico",
+ "Nicaragua",
+ "Panama",
+ "Paraguay",
+ "Peru",
+ "Puerto Rico",
+ "Trinidad and Tobago",
+ "United States",
+ "Uruguay",
+ "Venezuela"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 17876956,
+ 2883315,
+ 56602560,
+ 14785584,
+ 6377619,
+ 12350771,
+ 926317,
+ 6007797,
+ 2491346,
+ 3548753,
+ 2042865,
+ 3146381,
+ 3201488,
+ 1517453,
+ 1426095,
+ 30144317,
+ 1165790,
+ 940080,
+ 1555876,
+ 8025700,
+ 2227000,
+ 662850,
+ 157553000,
+ 2252965,
+ 5439568
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 62.485,
+ 40.414,
+ 50.917,
+ 68.75,
+ 54.745,
+ 50.643,
+ 57.206,
+ 59.421,
+ 45.928,
+ 48.357,
+ 45.262,
+ 42.023,
+ 37.579,
+ 41.912,
+ 58.53,
+ 50.789,
+ 42.314,
+ 55.191,
+ 62.649,
+ 43.902,
+ 64.28,
+ 59.1,
+ 68.44,
+ 66.071,
+ 55.088
+ ],
+ "y":[
+ 5911.315053,
+ 2677.326347,
+ 2108.944355,
+ 11367.16112,
+ 3939.978789,
+ 2144.115096,
+ 2627.009471,
+ 5586.53878,
+ 1397.717137,
+ 3522.110717,
+ 3048.3029,
+ 2428.237769,
+ 1840.366939,
+ 2194.926204,
+ 2898.530881,
+ 3478.125529,
+ 3112.363948,
+ 2480.380334,
+ 1952.308701,
+ 3758.523437,
+ 3081.959785,
+ 3023.271928,
+ 13990.48208,
+ 5716.766744,
+ 7689.799761
+ ]
+ },
+ {
+ "name":"Oceania",
+ "text":[
+ "Australia",
+ "New Zealand"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 8691212,
+ 1994794
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 69.12,
+ 69.39
+ ],
+ "y":[
+ 10039.59564,
+ 10556.57566
+ ]
+ }
+ ],
+ "name":"1952"
+ },
+ {
+ "data":[
+ {
+ "name":"Asia",
+ "text":[
+ "Afghanistan",
+ "Bahrain",
+ "Bangladesh",
+ "Cambodia",
+ "China",
+ "Hong Kong, China",
+ "India",
+ "Indonesia",
+ "Iran",
+ "Iraq",
+ "Israel",
+ "Japan",
+ "Jordan",
+ "Korea, Dem. Rep.",
+ "Korea, Rep.",
+ "Kuwait",
+ "Lebanon",
+ "Malaysia",
+ "Mongolia",
+ "Myanmar",
+ "Nepal",
+ "Oman",
+ "Pakistan",
+ "Philippines",
+ "Saudi Arabia",
+ "Singapore",
+ "Sri Lanka",
+ "Syria",
+ "Taiwan",
+ "Thailand",
+ "Vietnam",
+ "West Bank and Gaza",
+ "Yemen, Rep."
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 9240934,
+ 138655,
+ 51365468,
+ 5322536,
+ 637408000,
+ 2736300,
+ 409000000,
+ 90124000,
+ 19792000,
+ 6248643,
+ 1944401,
+ 91563009,
+ 746559,
+ 9411381,
+ 22611552,
+ 212846,
+ 1647412,
+ 7739235,
+ 882134,
+ 21731844,
+ 9682338,
+ 561977,
+ 46679944,
+ 26072194,
+ 4419650,
+ 1445929,
+ 9128546,
+ 4149908,
+ 10164215,
+ 25041917,
+ 28998543,
+ 1070439,
+ 5498090
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 30.332,
+ 53.832,
+ 39.348,
+ 41.366,
+ 50.54896,
+ 64.75,
+ 40.249,
+ 39.918,
+ 47.181,
+ 48.437,
+ 67.84,
+ 65.5,
+ 45.669,
+ 54.081,
+ 52.681,
+ 58.033,
+ 59.489,
+ 52.102,
+ 45.248,
+ 41.905,
+ 37.686,
+ 40.08,
+ 45.557,
+ 51.334,
+ 42.868,
+ 63.179,
+ 61.456,
+ 48.284,
+ 62.4,
+ 53.63,
+ 42.887,
+ 45.671,
+ 33.97
+ ],
+ "y":[
+ 820.8530296,
+ 11635.79945,
+ 661.6374577,
+ 434.0383364,
+ 575.9870009,
+ 3629.076457,
+ 590.061996,
+ 858.9002707,
+ 3290.257643,
+ 6229.333562,
+ 5385.278451,
+ 4317.694365,
+ 1886.080591,
+ 1571.134655,
+ 1487.593537,
+ 113523.1329,
+ 6089.786934,
+ 1810.066992,
+ 912.6626085,
+ 350,
+ 597.9363558,
+ 2242.746551,
+ 747.0835292,
+ 1547.944844,
+ 8157.591248,
+ 2843.104409,
+ 1072.546602,
+ 2117.234893,
+ 1507.86129,
+ 793.5774148,
+ 676.2854478,
+ 1827.067742,
+ 804.8304547
+ ]
+ },
+ {
+ "name":"Europe",
+ "text":[
+ "Albania",
+ "Austria",
+ "Belgium",
+ "Bosnia and Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Czech Republic",
+ "Denmark",
+ "Finland",
+ "France",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Serbia",
+ "Slovak Republic",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "United Kingdom"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 1476505,
+ 6965860,
+ 8989111,
+ 3076000,
+ 7651254,
+ 3991242,
+ 9513758,
+ 4487831,
+ 4324000,
+ 44310863,
+ 71019069,
+ 8096218,
+ 9839000,
+ 165110,
+ 2878220,
+ 49182000,
+ 442829,
+ 11026383,
+ 3491938,
+ 28235346,
+ 8817650,
+ 17829327,
+ 7271135,
+ 3844277,
+ 1533070,
+ 29841614,
+ 7363802,
+ 5126000,
+ 25670939,
+ 51430000
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 59.28,
+ 67.48,
+ 69.24,
+ 58.45,
+ 66.61,
+ 64.77,
+ 69.03,
+ 71.81,
+ 67.49,
+ 68.93,
+ 69.1,
+ 67.86,
+ 66.41,
+ 73.47,
+ 68.9,
+ 67.81,
+ 61.448,
+ 72.99,
+ 73.44,
+ 65.77,
+ 61.51,
+ 64.1,
+ 61.685,
+ 67.45,
+ 67.85,
+ 66.66,
+ 72.49,
+ 70.56,
+ 48.079,
+ 70.42
+ ],
+ "y":[
+ 1942.284244,
+ 8842.59803,
+ 9714.960623,
+ 1353.989176,
+ 3008.670727,
+ 4338.231617,
+ 8256.343918,
+ 11099.65935,
+ 7545.415386,
+ 8662.834898,
+ 10187.82665,
+ 4916.299889,
+ 6040.180011,
+ 9244.001412,
+ 5599.077872,
+ 6248.656232,
+ 3682.259903,
+ 11276.19344,
+ 11653.97304,
+ 4734.253019,
+ 3774.571743,
+ 3943.370225,
+ 4981.090891,
+ 6093.26298,
+ 5862.276629,
+ 4564.80241,
+ 9911.878226,
+ 17909.48973,
+ 2218.754257,
+ 11283.17795
+ ]
+ },
+ {
+ "name":"Africa",
+ "text":[
+ "Algeria",
+ "Angola",
+ "Benin",
+ "Botswana",
+ "Burkina Faso",
+ "Burundi",
+ "Cameroon",
+ "Central African Republic",
+ "Chad",
+ "Comoros",
+ "Congo, Dem. Rep.",
+ "Congo, Rep.",
+ "Cote d'Ivoire",
+ "Djibouti",
+ "Egypt",
+ "Equatorial Guinea",
+ "Eritrea",
+ "Ethiopia",
+ "Gabon",
+ "Gambia",
+ "Ghana",
+ "Guinea",
+ "Guinea-Bissau",
+ "Kenya",
+ "Lesotho",
+ "Liberia",
+ "Libya",
+ "Madagascar",
+ "Malawi",
+ "Mali",
+ "Mauritania",
+ "Mauritius",
+ "Morocco",
+ "Mozambique",
+ "Namibia",
+ "Niger",
+ "Nigeria",
+ "Reunion",
+ "Rwanda",
+ "Sao Tome and Principe",
+ "Senegal",
+ "Sierra Leone",
+ "Somalia",
+ "South Africa",
+ "Sudan",
+ "Swaziland",
+ "Tanzania",
+ "Togo",
+ "Tunisia",
+ "Uganda",
+ "Zambia",
+ "Zimbabwe"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 10270856,
+ 4561361,
+ 1925173,
+ 474639,
+ 4713416,
+ 2667518,
+ 5359923,
+ 1392284,
+ 2894855,
+ 170928,
+ 15577932,
+ 940458,
+ 3300000,
+ 71851,
+ 25009741,
+ 232922,
+ 1542611,
+ 22815614,
+ 434904,
+ 323150,
+ 6391288,
+ 2876726,
+ 601095,
+ 7454779,
+ 813338,
+ 975950,
+ 1201578,
+ 5181679,
+ 3221238,
+ 4241884,
+ 1076852,
+ 609816,
+ 11406350,
+ 7038035,
+ 548080,
+ 3692184,
+ 37173340,
+ 308700,
+ 2822082,
+ 61325,
+ 3054547,
+ 2295678,
+ 2780415,
+ 16151549,
+ 9753392,
+ 326741,
+ 9452826,
+ 1357445,
+ 3950849,
+ 6675501,
+ 3016000,
+ 3646340
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 45.685,
+ 31.999,
+ 40.358,
+ 49.618,
+ 34.906,
+ 40.533,
+ 40.428,
+ 37.464,
+ 39.881,
+ 42.46,
+ 40.652,
+ 45.053,
+ 42.469,
+ 37.328,
+ 44.444,
+ 35.983,
+ 38.047,
+ 36.667,
+ 38.999,
+ 32.065,
+ 44.779,
+ 34.558,
+ 33.489,
+ 44.686,
+ 45.047,
+ 39.486,
+ 45.289,
+ 38.865,
+ 37.207,
+ 35.307,
+ 42.338,
+ 58.089,
+ 45.423,
+ 33.779,
+ 45.226,
+ 38.598,
+ 37.802,
+ 55.09,
+ 41.5,
+ 48.945,
+ 39.329,
+ 31.57,
+ 34.977,
+ 47.985,
+ 39.624,
+ 43.424,
+ 42.974,
+ 41.208,
+ 47.1,
+ 42.571,
+ 44.077,
+ 50.469
+ ],
+ "y":[
+ 3013.976023,
+ 3827.940465,
+ 959.6010805,
+ 918.2325349,
+ 617.1834648,
+ 379.5646281,
+ 1313.048099,
+ 1190.844328,
+ 1308.495577,
+ 1211.148548,
+ 905.8602303,
+ 2315.056572,
+ 1500.895925,
+ 2864.969076,
+ 1458.915272,
+ 426.0964081,
+ 344.1618859,
+ 378.9041632,
+ 4976.198099,
+ 520.9267111,
+ 1043.561537,
+ 576.2670245,
+ 431.7904566,
+ 944.4383152,
+ 335.9971151,
+ 620.9699901,
+ 3448.284395,
+ 1589.20275,
+ 416.3698064,
+ 490.3821867,
+ 846.1202613,
+ 2034.037981,
+ 1642.002314,
+ 495.5868333,
+ 2621.448058,
+ 835.5234025,
+ 1100.592563,
+ 2769.451844,
+ 540.2893983,
+ 860.7369026,
+ 1567.653006,
+ 1004.484437,
+ 1258.147413,
+ 5487.104219,
+ 1770.337074,
+ 1244.708364,
+ 698.5356073,
+ 925.9083202,
+ 1395.232468,
+ 774.3710692,
+ 1311.956766,
+ 518.7642681
+ ]
+ },
+ {
+ "name":"Americas",
+ "text":[
+ "Argentina",
+ "Bolivia",
+ "Brazil",
+ "Canada",
+ "Chile",
+ "Colombia",
+ "Costa Rica",
+ "Cuba",
+ "Dominican Republic",
+ "Ecuador",
+ "El Salvador",
+ "Guatemala",
+ "Haiti",
+ "Honduras",
+ "Jamaica",
+ "Mexico",
+ "Nicaragua",
+ "Panama",
+ "Paraguay",
+ "Peru",
+ "Puerto Rico",
+ "Trinidad and Tobago",
+ "United States",
+ "Uruguay",
+ "Venezuela"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 19610538,
+ 3211738,
+ 65551171,
+ 17010154,
+ 7048426,
+ 14485993,
+ 1112300,
+ 6640752,
+ 2923186,
+ 4058385,
+ 2355805,
+ 3640876,
+ 3507701,
+ 1770390,
+ 1535090,
+ 35015548,
+ 1358828,
+ 1063506,
+ 1770902,
+ 9146100,
+ 2260000,
+ 764900,
+ 171984000,
+ 2424959,
+ 6702668
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 64.399,
+ 41.89,
+ 53.285,
+ 69.96,
+ 56.074,
+ 55.118,
+ 60.026,
+ 62.325,
+ 49.828,
+ 51.356,
+ 48.57,
+ 44.142,
+ 40.696,
+ 44.665,
+ 62.61,
+ 55.19,
+ 45.432,
+ 59.201,
+ 63.196,
+ 46.263,
+ 68.54,
+ 61.8,
+ 69.49,
+ 67.044,
+ 57.907
+ ],
+ "y":[
+ 6856.856212,
+ 2127.686326,
+ 2487.365989,
+ 12489.95006,
+ 4315.622723,
+ 2323.805581,
+ 2990.010802,
+ 6092.174359,
+ 1544.402995,
+ 3780.546651,
+ 3421.523218,
+ 2617.155967,
+ 1726.887882,
+ 2220.487682,
+ 4756.525781,
+ 4131.546641,
+ 3457.415947,
+ 2961.800905,
+ 2046.154706,
+ 4245.256698,
+ 3907.156189,
+ 4100.3934,
+ 14847.12712,
+ 6150.772969,
+ 9802.466526
+ ]
+ },
+ {
+ "name":"Oceania",
+ "text":[
+ "Australia",
+ "New Zealand"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 9712569,
+ 2229407
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 70.33,
+ 70.26
+ ],
+ "y":[
+ 10949.64959,
+ 12247.39532
+ ]
+ }
+ ],
+ "name":"1957"
+ },
+ {
+ "data":[
+ {
+ "name":"Asia",
+ "text":[
+ "Afghanistan",
+ "Bahrain",
+ "Bangladesh",
+ "Cambodia",
+ "China",
+ "Hong Kong, China",
+ "India",
+ "Indonesia",
+ "Iran",
+ "Iraq",
+ "Israel",
+ "Japan",
+ "Jordan",
+ "Korea, Dem. Rep.",
+ "Korea, Rep.",
+ "Kuwait",
+ "Lebanon",
+ "Malaysia",
+ "Mongolia",
+ "Myanmar",
+ "Nepal",
+ "Oman",
+ "Pakistan",
+ "Philippines",
+ "Saudi Arabia",
+ "Singapore",
+ "Sri Lanka",
+ "Syria",
+ "Taiwan",
+ "Thailand",
+ "Vietnam",
+ "West Bank and Gaza",
+ "Yemen, Rep."
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 10267083,
+ 171863,
+ 56839289,
+ 6083619,
+ 665770000,
+ 3305200,
+ 454000000,
+ 99028000,
+ 22874000,
+ 7240260,
+ 2310904,
+ 95831757,
+ 933559,
+ 10917494,
+ 26420307,
+ 358266,
+ 1886848,
+ 8906385,
+ 1010280,
+ 23634436,
+ 10332057,
+ 628164,
+ 53100671,
+ 30325264,
+ 4943029,
+ 1750200,
+ 10421936,
+ 4834621,
+ 11918938,
+ 29263397,
+ 33796140,
+ 1133134,
+ 6120081
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 31.997,
+ 56.923,
+ 41.216,
+ 43.415,
+ 44.50136,
+ 67.65,
+ 43.605,
+ 42.518,
+ 49.325,
+ 51.457,
+ 69.39,
+ 68.73,
+ 48.126,
+ 56.656,
+ 55.292,
+ 60.47,
+ 62.094,
+ 55.737,
+ 48.251,
+ 45.108,
+ 39.393,
+ 43.165,
+ 47.67,
+ 54.757,
+ 45.914,
+ 65.798,
+ 62.192,
+ 50.305,
+ 65.2,
+ 56.061,
+ 45.363,
+ 48.127,
+ 35.18
+ ],
+ "y":[
+ 853.10071,
+ 12753.27514,
+ 686.3415538,
+ 496.9136476,
+ 487.6740183,
+ 4692.648272,
+ 658.3471509,
+ 849.2897701,
+ 4187.329802,
+ 8341.737815,
+ 7105.630706,
+ 6576.649461,
+ 2348.009158,
+ 1621.693598,
+ 1536.344387,
+ 95458.11176,
+ 5714.560611,
+ 2036.884944,
+ 1056.353958,
+ 388,
+ 652.3968593,
+ 2924.638113,
+ 803.3427418,
+ 1649.552153,
+ 11626.41975,
+ 3674.735572,
+ 1074.47196,
+ 2193.037133,
+ 1822.879028,
+ 1002.199172,
+ 772.0491602,
+ 2198.956312,
+ 825.6232006
+ ]
+ },
+ {
+ "name":"Europe",
+ "text":[
+ "Albania",
+ "Austria",
+ "Belgium",
+ "Bosnia and Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Czech Republic",
+ "Denmark",
+ "Finland",
+ "France",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Serbia",
+ "Slovak Republic",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "United Kingdom"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 1728137,
+ 7129864,
+ 9218400,
+ 3349000,
+ 8012946,
+ 4076557,
+ 9620282,
+ 4646899,
+ 4491443,
+ 47124000,
+ 73739117,
+ 8448233,
+ 10063000,
+ 182053,
+ 2830000,
+ 50843200,
+ 474528,
+ 11805689,
+ 3638919,
+ 30329617,
+ 9019800,
+ 18680721,
+ 7616060,
+ 4237384,
+ 1582962,
+ 31158061,
+ 7561588,
+ 5666000,
+ 29788695,
+ 53292000
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 64.82,
+ 69.54,
+ 70.25,
+ 61.93,
+ 69.51,
+ 67.13,
+ 69.9,
+ 72.35,
+ 68.75,
+ 70.51,
+ 70.3,
+ 69.51,
+ 67.96,
+ 73.68,
+ 70.29,
+ 69.24,
+ 63.728,
+ 73.23,
+ 73.47,
+ 67.64,
+ 64.39,
+ 66.8,
+ 64.531,
+ 70.33,
+ 69.15,
+ 69.69,
+ 73.37,
+ 71.32,
+ 52.098,
+ 70.76
+ ],
+ "y":[
+ 2312.888958,
+ 10750.72111,
+ 10991.20676,
+ 1709.683679,
+ 4254.337839,
+ 5477.890018,
+ 10136.86713,
+ 13583.31351,
+ 9371.842561,
+ 10560.48553,
+ 12902.46291,
+ 6017.190733,
+ 7550.359877,
+ 10350.15906,
+ 6631.597314,
+ 8243.58234,
+ 4649.593785,
+ 12790.84956,
+ 13450.40151,
+ 5338.752143,
+ 4727.954889,
+ 4734.997586,
+ 6289.629157,
+ 7481.107598,
+ 7402.303395,
+ 5693.843879,
+ 12329.44192,
+ 20431.0927,
+ 2322.869908,
+ 12477.17707
+ ]
+ },
+ {
+ "name":"Africa",
+ "text":[
+ "Algeria",
+ "Angola",
+ "Benin",
+ "Botswana",
+ "Burkina Faso",
+ "Burundi",
+ "Cameroon",
+ "Central African Republic",
+ "Chad",
+ "Comoros",
+ "Congo, Dem. Rep.",
+ "Congo, Rep.",
+ "Cote d'Ivoire",
+ "Djibouti",
+ "Egypt",
+ "Equatorial Guinea",
+ "Eritrea",
+ "Ethiopia",
+ "Gabon",
+ "Gambia",
+ "Ghana",
+ "Guinea",
+ "Guinea-Bissau",
+ "Kenya",
+ "Lesotho",
+ "Liberia",
+ "Libya",
+ "Madagascar",
+ "Malawi",
+ "Mali",
+ "Mauritania",
+ "Mauritius",
+ "Morocco",
+ "Mozambique",
+ "Namibia",
+ "Niger",
+ "Nigeria",
+ "Reunion",
+ "Rwanda",
+ "Sao Tome and Principe",
+ "Senegal",
+ "Sierra Leone",
+ "Somalia",
+ "South Africa",
+ "Sudan",
+ "Swaziland",
+ "Tanzania",
+ "Togo",
+ "Tunisia",
+ "Uganda",
+ "Zambia",
+ "Zimbabwe"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 11000948,
+ 4826015,
+ 2151895,
+ 512764,
+ 4919632,
+ 2961915,
+ 5793633,
+ 1523478,
+ 3150417,
+ 191689,
+ 17486434,
+ 1047924,
+ 3832408,
+ 89898,
+ 28173309,
+ 249220,
+ 1666618,
+ 25145372,
+ 455661,
+ 374020,
+ 7355248,
+ 3140003,
+ 627820,
+ 8678557,
+ 893143,
+ 1112796,
+ 1441863,
+ 5703324,
+ 3628608,
+ 4690372,
+ 1146757,
+ 701016,
+ 13056604,
+ 7788944,
+ 621392,
+ 4076008,
+ 41871351,
+ 358900,
+ 3051242,
+ 65345,
+ 3430243,
+ 2467895,
+ 3080153,
+ 18356657,
+ 11183227,
+ 370006,
+ 10863958,
+ 1528098,
+ 4286552,
+ 7688797,
+ 3421000,
+ 4277736
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 48.303,
+ 34,
+ 42.618,
+ 51.52,
+ 37.814,
+ 42.045,
+ 42.643,
+ 39.475,
+ 41.716,
+ 44.467,
+ 42.122,
+ 48.435,
+ 44.93,
+ 39.693,
+ 46.992,
+ 37.485,
+ 40.158,
+ 40.059,
+ 40.489,
+ 33.896,
+ 46.452,
+ 35.753,
+ 34.488,
+ 47.949,
+ 47.747,
+ 40.502,
+ 47.808,
+ 40.848,
+ 38.41,
+ 36.936,
+ 44.248,
+ 60.246,
+ 47.924,
+ 36.161,
+ 48.386,
+ 39.487,
+ 39.36,
+ 57.666,
+ 43,
+ 51.893,
+ 41.454,
+ 32.767,
+ 36.981,
+ 49.951,
+ 40.87,
+ 44.992,
+ 44.246,
+ 43.922,
+ 49.579,
+ 45.344,
+ 46.023,
+ 52.358
+ ],
+ "y":[
+ 2550.81688,
+ 4269.276742,
+ 949.4990641,
+ 983.6539764,
+ 722.5120206,
+ 355.2032273,
+ 1399.607441,
+ 1193.068753,
+ 1389.817618,
+ 1406.648278,
+ 896.3146335,
+ 2464.783157,
+ 1728.869428,
+ 3020.989263,
+ 1693.335853,
+ 582.8419714,
+ 380.9958433,
+ 419.4564161,
+ 6631.459222,
+ 599.650276,
+ 1190.041118,
+ 686.3736739,
+ 522.0343725,
+ 896.9663732,
+ 411.8006266,
+ 634.1951625,
+ 6757.030816,
+ 1643.38711,
+ 427.9010856,
+ 496.1743428,
+ 1055.896036,
+ 2529.067487,
+ 1566.353493,
+ 556.6863539,
+ 3173.215595,
+ 997.7661127,
+ 1150.927478,
+ 3173.72334,
+ 597.4730727,
+ 1071.551119,
+ 1654.988723,
+ 1116.639877,
+ 1369.488336,
+ 5768.729717,
+ 1959.593767,
+ 1856.182125,
+ 722.0038073,
+ 1067.53481,
+ 1660.30321,
+ 767.2717398,
+ 1452.725766,
+ 527.2721818
+ ]
+ },
+ {
+ "name":"Americas",
+ "text":[
+ "Argentina",
+ "Bolivia",
+ "Brazil",
+ "Canada",
+ "Chile",
+ "Colombia",
+ "Costa Rica",
+ "Cuba",
+ "Dominican Republic",
+ "Ecuador",
+ "El Salvador",
+ "Guatemala",
+ "Haiti",
+ "Honduras",
+ "Jamaica",
+ "Mexico",
+ "Nicaragua",
+ "Panama",
+ "Paraguay",
+ "Peru",
+ "Puerto Rico",
+ "Trinidad and Tobago",
+ "United States",
+ "Uruguay",
+ "Venezuela"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 21283783,
+ 3593918,
+ 76039390,
+ 18985849,
+ 7961258,
+ 17009885,
+ 1345187,
+ 7254373,
+ 3453434,
+ 4681707,
+ 2747687,
+ 4208858,
+ 3880130,
+ 2090162,
+ 1665128,
+ 41121485,
+ 1590597,
+ 1215725,
+ 2009813,
+ 10516500,
+ 2448046,
+ 887498,
+ 186538000,
+ 2598466,
+ 8143375
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 65.142,
+ 43.428,
+ 55.665,
+ 71.3,
+ 57.924,
+ 57.863,
+ 62.842,
+ 65.246,
+ 53.459,
+ 54.64,
+ 52.307,
+ 46.954,
+ 43.59,
+ 48.041,
+ 65.61,
+ 58.299,
+ 48.632,
+ 61.817,
+ 64.361,
+ 49.096,
+ 69.62,
+ 64.9,
+ 70.21,
+ 68.253,
+ 60.77
+ ],
+ "y":[
+ 7133.166023,
+ 2180.972546,
+ 3336.585802,
+ 13462.48555,
+ 4519.094331,
+ 2492.351109,
+ 3460.937025,
+ 5180.75591,
+ 1662.137359,
+ 4086.114078,
+ 3776.803627,
+ 2750.364446,
+ 1796.589032,
+ 2291.156835,
+ 5246.107524,
+ 4581.609385,
+ 3634.364406,
+ 3536.540301,
+ 2148.027146,
+ 4957.037982,
+ 5108.34463,
+ 4997.523971,
+ 16173.14586,
+ 5603.357717,
+ 8422.974165
+ ]
+ },
+ {
+ "name":"Oceania",
+ "text":[
+ "Australia",
+ "New Zealand"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 10794968,
+ 2488550
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 70.93,
+ 71.24
+ ],
+ "y":[
+ 12217.22686,
+ 13175.678
+ ]
+ }
+ ],
+ "name":"1962"
+ },
+ {
+ "data":[
+ {
+ "name":"Asia",
+ "text":[
+ "Afghanistan",
+ "Bahrain",
+ "Bangladesh",
+ "Cambodia",
+ "China",
+ "Hong Kong, China",
+ "India",
+ "Indonesia",
+ "Iran",
+ "Iraq",
+ "Israel",
+ "Japan",
+ "Jordan",
+ "Korea, Dem. Rep.",
+ "Korea, Rep.",
+ "Kuwait",
+ "Lebanon",
+ "Malaysia",
+ "Mongolia",
+ "Myanmar",
+ "Nepal",
+ "Oman",
+ "Pakistan",
+ "Philippines",
+ "Saudi Arabia",
+ "Singapore",
+ "Sri Lanka",
+ "Syria",
+ "Taiwan",
+ "Thailand",
+ "Vietnam",
+ "West Bank and Gaza",
+ "Yemen, Rep."
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 11537966,
+ 202182,
+ 62821884,
+ 6960067,
+ 754550000,
+ 3722800,
+ 506000000,
+ 109343000,
+ 26538000,
+ 8519282,
+ 2693585,
+ 100825279,
+ 1255058,
+ 12617009,
+ 30131000,
+ 575003,
+ 2186894,
+ 10154878,
+ 1149500,
+ 25870271,
+ 11261690,
+ 714775,
+ 60641899,
+ 35356600,
+ 5618198,
+ 1977600,
+ 11737396,
+ 5680812,
+ 13648692,
+ 34024249,
+ 39463910,
+ 1142636,
+ 6740785
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 34.02,
+ 59.923,
+ 43.453,
+ 45.415,
+ 58.38112,
+ 70,
+ 47.193,
+ 45.964,
+ 52.469,
+ 54.459,
+ 70.75,
+ 71.43,
+ 51.629,
+ 59.942,
+ 57.716,
+ 64.624,
+ 63.87,
+ 59.371,
+ 51.253,
+ 49.379,
+ 41.472,
+ 46.988,
+ 49.8,
+ 56.393,
+ 49.901,
+ 67.946,
+ 64.266,
+ 53.655,
+ 67.5,
+ 58.285,
+ 47.838,
+ 51.631,
+ 36.984
+ ],
+ "y":[
+ 836.1971382,
+ 14804.6727,
+ 721.1860862,
+ 523.4323142,
+ 612.7056934,
+ 6197.962814,
+ 700.7706107,
+ 762.4317721,
+ 5906.731805,
+ 8931.459811,
+ 8393.741404,
+ 9847.788607,
+ 2741.796252,
+ 2143.540609,
+ 2029.228142,
+ 80894.88326,
+ 6006.983042,
+ 2277.742396,
+ 1226.04113,
+ 349,
+ 676.4422254,
+ 4720.942687,
+ 942.4082588,
+ 1814.12743,
+ 16903.04886,
+ 4977.41854,
+ 1135.514326,
+ 1881.923632,
+ 2643.858681,
+ 1295.46066,
+ 637.1232887,
+ 2649.715007,
+ 862.4421463
+ ]
+ },
+ {
+ "name":"Europe",
+ "text":[
+ "Albania",
+ "Austria",
+ "Belgium",
+ "Bosnia and Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Czech Republic",
+ "Denmark",
+ "Finland",
+ "France",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Serbia",
+ "Slovak Republic",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "United Kingdom"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 1984060,
+ 7376998,
+ 9556500,
+ 3585000,
+ 8310226,
+ 4174366,
+ 9835109,
+ 4838800,
+ 4605744,
+ 49569000,
+ 76368453,
+ 8716441,
+ 10223422,
+ 198676,
+ 2900100,
+ 52667100,
+ 501035,
+ 12596822,
+ 3786019,
+ 31785378,
+ 9103000,
+ 19284814,
+ 7971222,
+ 4442238,
+ 1646912,
+ 32850275,
+ 7867931,
+ 6063000,
+ 33411317,
+ 54959000
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 66.22,
+ 70.14,
+ 70.94,
+ 64.79,
+ 70.42,
+ 68.5,
+ 70.38,
+ 72.96,
+ 69.83,
+ 71.55,
+ 70.8,
+ 71,
+ 69.5,
+ 73.73,
+ 71.08,
+ 71.06,
+ 67.178,
+ 73.82,
+ 74.08,
+ 69.61,
+ 66.6,
+ 66.8,
+ 66.914,
+ 70.98,
+ 69.18,
+ 71.44,
+ 74.16,
+ 72.77,
+ 54.336,
+ 71.36
+ ],
+ "y":[
+ 2760.196931,
+ 12834.6024,
+ 13149.04119,
+ 2172.352423,
+ 5577.0028,
+ 6960.297861,
+ 11399.44489,
+ 15937.21123,
+ 10921.63626,
+ 12999.91766,
+ 14745.62561,
+ 8513.097016,
+ 9326.64467,
+ 13319.89568,
+ 7655.568963,
+ 10022.40131,
+ 5907.850937,
+ 15363.25136,
+ 16361.87647,
+ 6557.152776,
+ 6361.517993,
+ 6470.866545,
+ 7991.707066,
+ 8412.902397,
+ 9405.489397,
+ 7993.512294,
+ 15258.29697,
+ 22966.14432,
+ 2826.356387,
+ 14142.85089
+ ]
+ },
+ {
+ "name":"Africa",
+ "text":[
+ "Algeria",
+ "Angola",
+ "Benin",
+ "Botswana",
+ "Burkina Faso",
+ "Burundi",
+ "Cameroon",
+ "Central African Republic",
+ "Chad",
+ "Comoros",
+ "Congo, Dem. Rep.",
+ "Congo, Rep.",
+ "Cote d'Ivoire",
+ "Djibouti",
+ "Egypt",
+ "Equatorial Guinea",
+ "Eritrea",
+ "Ethiopia",
+ "Gabon",
+ "Gambia",
+ "Ghana",
+ "Guinea",
+ "Guinea-Bissau",
+ "Kenya",
+ "Lesotho",
+ "Liberia",
+ "Libya",
+ "Madagascar",
+ "Malawi",
+ "Mali",
+ "Mauritania",
+ "Mauritius",
+ "Morocco",
+ "Mozambique",
+ "Namibia",
+ "Niger",
+ "Nigeria",
+ "Reunion",
+ "Rwanda",
+ "Sao Tome and Principe",
+ "Senegal",
+ "Sierra Leone",
+ "Somalia",
+ "South Africa",
+ "Sudan",
+ "Swaziland",
+ "Tanzania",
+ "Togo",
+ "Tunisia",
+ "Uganda",
+ "Zambia",
+ "Zimbabwe"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 12760499,
+ 5247469,
+ 2427334,
+ 553541,
+ 5127935,
+ 3330989,
+ 6335506,
+ 1733638,
+ 3495967,
+ 217378,
+ 19941073,
+ 1179760,
+ 4744870,
+ 127617,
+ 31681188,
+ 259864,
+ 1820319,
+ 27860297,
+ 489004,
+ 439593,
+ 8490213,
+ 3451418,
+ 601287,
+ 10191512,
+ 996380,
+ 1279406,
+ 1759224,
+ 6334556,
+ 4147252,
+ 5212416,
+ 1230542,
+ 789309,
+ 14770296,
+ 8680909,
+ 706640,
+ 4534062,
+ 47287752,
+ 414024,
+ 3451079,
+ 70787,
+ 3965841,
+ 2662190,
+ 3428839,
+ 20997321,
+ 12716129,
+ 420690,
+ 12607312,
+ 1735550,
+ 4786986,
+ 8900294,
+ 3900000,
+ 4995432
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 51.407,
+ 35.985,
+ 44.885,
+ 53.298,
+ 40.697,
+ 43.548,
+ 44.799,
+ 41.478,
+ 43.601,
+ 46.472,
+ 44.056,
+ 52.04,
+ 47.35,
+ 42.074,
+ 49.293,
+ 38.987,
+ 42.189,
+ 42.115,
+ 44.598,
+ 35.857,
+ 48.072,
+ 37.197,
+ 35.492,
+ 50.654,
+ 48.492,
+ 41.536,
+ 50.227,
+ 42.881,
+ 39.487,
+ 38.487,
+ 46.289,
+ 61.557,
+ 50.335,
+ 38.113,
+ 51.159,
+ 40.118,
+ 41.04,
+ 60.542,
+ 44.1,
+ 54.425,
+ 43.563,
+ 34.113,
+ 38.977,
+ 51.927,
+ 42.858,
+ 46.633,
+ 45.757,
+ 46.769,
+ 52.053,
+ 48.051,
+ 47.768,
+ 53.995
+ ],
+ "y":[
+ 3246.991771,
+ 5522.776375,
+ 1035.831411,
+ 1214.709294,
+ 794.8265597,
+ 412.9775136,
+ 1508.453148,
+ 1136.056615,
+ 1196.810565,
+ 1876.029643,
+ 861.5932424,
+ 2677.939642,
+ 2052.050473,
+ 3020.050513,
+ 1814.880728,
+ 915.5960025,
+ 468.7949699,
+ 516.1186438,
+ 8358.761987,
+ 734.7829124,
+ 1125.69716,
+ 708.7595409,
+ 715.5806402,
+ 1056.736457,
+ 498.6390265,
+ 713.6036483,
+ 18772.75169,
+ 1634.047282,
+ 495.5147806,
+ 545.0098873,
+ 1421.145193,
+ 2475.387562,
+ 1711.04477,
+ 566.6691539,
+ 3793.694753,
+ 1054.384891,
+ 1014.514104,
+ 4021.175739,
+ 510.9637142,
+ 1384.840593,
+ 1612.404632,
+ 1206.043465,
+ 1284.73318,
+ 7114.477971,
+ 1687.997641,
+ 2613.101665,
+ 848.2186575,
+ 1477.59676,
+ 1932.360167,
+ 908.9185217,
+ 1777.077318,
+ 569.7950712
+ ]
+ },
+ {
+ "name":"Americas",
+ "text":[
+ "Argentina",
+ "Bolivia",
+ "Brazil",
+ "Canada",
+ "Chile",
+ "Colombia",
+ "Costa Rica",
+ "Cuba",
+ "Dominican Republic",
+ "Ecuador",
+ "El Salvador",
+ "Guatemala",
+ "Haiti",
+ "Honduras",
+ "Jamaica",
+ "Mexico",
+ "Nicaragua",
+ "Panama",
+ "Paraguay",
+ "Peru",
+ "Puerto Rico",
+ "Trinidad and Tobago",
+ "United States",
+ "Uruguay",
+ "Venezuela"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 22934225,
+ 4040665,
+ 88049823,
+ 20819767,
+ 8858908,
+ 19764027,
+ 1588717,
+ 8139332,
+ 4049146,
+ 5432424,
+ 3232927,
+ 4690773,
+ 4318137,
+ 2500689,
+ 1861096,
+ 47995559,
+ 1865490,
+ 1405486,
+ 2287985,
+ 12132200,
+ 2648961,
+ 960155,
+ 198712000,
+ 2748579,
+ 9709552
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 65.634,
+ 45.032,
+ 57.632,
+ 72.13,
+ 60.523,
+ 59.963,
+ 65.424,
+ 68.29,
+ 56.751,
+ 56.678,
+ 55.855,
+ 50.016,
+ 46.243,
+ 50.924,
+ 67.51,
+ 60.11,
+ 51.884,
+ 64.071,
+ 64.951,
+ 51.445,
+ 71.1,
+ 65.4,
+ 70.76,
+ 68.468,
+ 63.479
+ ],
+ "y":[
+ 8052.953021,
+ 2586.886053,
+ 3429.864357,
+ 16076.58803,
+ 5106.654313,
+ 2678.729839,
+ 4161.727834,
+ 5690.268015,
+ 1653.723003,
+ 4579.074215,
+ 4358.595393,
+ 3242.531147,
+ 1452.057666,
+ 2538.269358,
+ 6124.703451,
+ 5754.733883,
+ 4643.393534,
+ 4421.009084,
+ 2299.376311,
+ 5788.09333,
+ 6929.277714,
+ 5621.368472,
+ 19530.36557,
+ 5444.61962,
+ 9541.474188
+ ]
+ },
+ {
+ "name":"Oceania",
+ "text":[
+ "Australia",
+ "New Zealand"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 11872264,
+ 2728150
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 71.1,
+ 71.52
+ ],
+ "y":[
+ 14526.12465,
+ 14463.91893
+ ]
+ }
+ ],
+ "name":"1967"
+ },
+ {
+ "data":[
+ {
+ "name":"Asia",
+ "text":[
+ "Afghanistan",
+ "Bahrain",
+ "Bangladesh",
+ "Cambodia",
+ "China",
+ "Hong Kong, China",
+ "India",
+ "Indonesia",
+ "Iran",
+ "Iraq",
+ "Israel",
+ "Japan",
+ "Jordan",
+ "Korea, Dem. Rep.",
+ "Korea, Rep.",
+ "Kuwait",
+ "Lebanon",
+ "Malaysia",
+ "Mongolia",
+ "Myanmar",
+ "Nepal",
+ "Oman",
+ "Pakistan",
+ "Philippines",
+ "Saudi Arabia",
+ "Singapore",
+ "Sri Lanka",
+ "Syria",
+ "Taiwan",
+ "Thailand",
+ "Vietnam",
+ "West Bank and Gaza",
+ "Yemen, Rep."
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 13079460,
+ 230800,
+ 70759295,
+ 7450606,
+ 862030000,
+ 4115700,
+ 567000000,
+ 121282000,
+ 30614000,
+ 10061506,
+ 3095893,
+ 107188273,
+ 1613551,
+ 14781241,
+ 33505000,
+ 841934,
+ 2680018,
+ 11441462,
+ 1320500,
+ 28466390,
+ 12412593,
+ 829050,
+ 69325921,
+ 40850141,
+ 6472756,
+ 2152400,
+ 13016733,
+ 6701172,
+ 15226039,
+ 39276153,
+ 44655014,
+ 1089572,
+ 7407075
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 36.088,
+ 63.3,
+ 45.252,
+ 40.317,
+ 63.11888,
+ 72,
+ 50.651,
+ 49.203,
+ 55.234,
+ 56.95,
+ 71.63,
+ 73.42,
+ 56.528,
+ 63.983,
+ 62.612,
+ 67.712,
+ 65.421,
+ 63.01,
+ 53.754,
+ 53.07,
+ 43.971,
+ 52.143,
+ 51.929,
+ 58.065,
+ 53.886,
+ 69.521,
+ 65.042,
+ 57.296,
+ 69.39,
+ 60.405,
+ 50.254,
+ 56.532,
+ 39.848
+ ],
+ "y":[
+ 739.9811058,
+ 18268.65839,
+ 630.2336265,
+ 421.6240257,
+ 676.9000921,
+ 8315.928145,
+ 724.032527,
+ 1111.107907,
+ 9613.818607,
+ 9576.037596,
+ 12786.93223,
+ 14778.78636,
+ 2110.856309,
+ 3701.621503,
+ 3030.87665,
+ 109347.867,
+ 7486.384341,
+ 2849.09478,
+ 1421.741975,
+ 357,
+ 674.7881296,
+ 10618.03855,
+ 1049.938981,
+ 1989.37407,
+ 24837.42865,
+ 8597.756202,
+ 1213.39553,
+ 2571.423014,
+ 4062.523897,
+ 1524.358936,
+ 699.5016441,
+ 3133.409277,
+ 1265.047031
+ ]
+ },
+ {
+ "name":"Europe",
+ "text":[
+ "Albania",
+ "Austria",
+ "Belgium",
+ "Bosnia and Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Czech Republic",
+ "Denmark",
+ "Finland",
+ "France",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Serbia",
+ "Slovak Republic",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "United Kingdom"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 2263554,
+ 7544201,
+ 9709100,
+ 3819000,
+ 8576200,
+ 4225310,
+ 9862158,
+ 4991596,
+ 4639657,
+ 51732000,
+ 78717088,
+ 8888628,
+ 10394091,
+ 209275,
+ 3024400,
+ 54365564,
+ 527678,
+ 13329874,
+ 3933004,
+ 33039545,
+ 8970450,
+ 20662648,
+ 8313288,
+ 4593433,
+ 1694510,
+ 34513161,
+ 8122293,
+ 6401400,
+ 37492953,
+ 56079000
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 67.69,
+ 70.63,
+ 71.44,
+ 67.45,
+ 70.9,
+ 69.61,
+ 70.29,
+ 73.47,
+ 70.87,
+ 72.38,
+ 71,
+ 72.34,
+ 69.76,
+ 74.46,
+ 71.28,
+ 72.19,
+ 70.636,
+ 73.75,
+ 74.34,
+ 70.85,
+ 69.26,
+ 69.21,
+ 68.7,
+ 70.35,
+ 69.82,
+ 73.06,
+ 74.72,
+ 73.78,
+ 57.005,
+ 72.01
+ ],
+ "y":[
+ 3313.422188,
+ 16661.6256,
+ 16672.14356,
+ 2860.16975,
+ 6597.494398,
+ 9164.090127,
+ 13108.4536,
+ 18866.20721,
+ 14358.8759,
+ 16107.19171,
+ 18016.18027,
+ 12724.82957,
+ 10168.65611,
+ 15798.06362,
+ 9530.772896,
+ 12269.27378,
+ 7778.414017,
+ 18794.74567,
+ 18965.05551,
+ 8006.506993,
+ 9022.247417,
+ 8011.414402,
+ 10522.06749,
+ 9674.167626,
+ 12383.4862,
+ 10638.75131,
+ 17832.02464,
+ 27195.11304,
+ 3450.69638,
+ 15895.11641
+ ]
+ },
+ {
+ "name":"Africa",
+ "text":[
+ "Algeria",
+ "Angola",
+ "Benin",
+ "Botswana",
+ "Burkina Faso",
+ "Burundi",
+ "Cameroon",
+ "Central African Republic",
+ "Chad",
+ "Comoros",
+ "Congo, Dem. Rep.",
+ "Congo, Rep.",
+ "Cote d'Ivoire",
+ "Djibouti",
+ "Egypt",
+ "Equatorial Guinea",
+ "Eritrea",
+ "Ethiopia",
+ "Gabon",
+ "Gambia",
+ "Ghana",
+ "Guinea",
+ "Guinea-Bissau",
+ "Kenya",
+ "Lesotho",
+ "Liberia",
+ "Libya",
+ "Madagascar",
+ "Malawi",
+ "Mali",
+ "Mauritania",
+ "Mauritius",
+ "Morocco",
+ "Mozambique",
+ "Namibia",
+ "Niger",
+ "Nigeria",
+ "Reunion",
+ "Rwanda",
+ "Sao Tome and Principe",
+ "Senegal",
+ "Sierra Leone",
+ "Somalia",
+ "South Africa",
+ "Sudan",
+ "Swaziland",
+ "Tanzania",
+ "Togo",
+ "Tunisia",
+ "Uganda",
+ "Zambia",
+ "Zimbabwe"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 14760787,
+ 5894858,
+ 2761407,
+ 619351,
+ 5433886,
+ 3529983,
+ 7021028,
+ 1927260,
+ 3899068,
+ 250027,
+ 23007669,
+ 1340458,
+ 6071696,
+ 178848,
+ 34807417,
+ 277603,
+ 2260187,
+ 30770372,
+ 537977,
+ 517101,
+ 9354120,
+ 3811387,
+ 625361,
+ 12044785,
+ 1116779,
+ 1482628,
+ 2183877,
+ 7082430,
+ 4730997,
+ 5828158,
+ 1332786,
+ 851334,
+ 16660670,
+ 9809596,
+ 821782,
+ 5060262,
+ 53740085,
+ 461633,
+ 3992121,
+ 76595,
+ 4588696,
+ 2879013,
+ 3840161,
+ 23935810,
+ 14597019,
+ 480105,
+ 14706593,
+ 2056351,
+ 5303507,
+ 10190285,
+ 4506497,
+ 5861135
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 54.518,
+ 37.928,
+ 47.014,
+ 56.024,
+ 43.591,
+ 44.057,
+ 47.049,
+ 43.457,
+ 45.569,
+ 48.944,
+ 45.989,
+ 54.907,
+ 49.801,
+ 44.366,
+ 51.137,
+ 40.516,
+ 44.142,
+ 43.515,
+ 48.69,
+ 38.308,
+ 49.875,
+ 38.842,
+ 36.486,
+ 53.559,
+ 49.767,
+ 42.614,
+ 52.773,
+ 44.851,
+ 41.766,
+ 39.977,
+ 48.437,
+ 62.944,
+ 52.862,
+ 40.328,
+ 53.867,
+ 40.546,
+ 42.821,
+ 64.274,
+ 44.6,
+ 56.48,
+ 45.815,
+ 35.4,
+ 40.973,
+ 53.696,
+ 45.083,
+ 49.552,
+ 47.62,
+ 49.759,
+ 55.602,
+ 51.016,
+ 50.107,
+ 55.635
+ ],
+ "y":[
+ 4182.663766,
+ 5473.288005,
+ 1085.796879,
+ 2263.611114,
+ 854.7359763,
+ 464.0995039,
+ 1684.146528,
+ 1070.013275,
+ 1104.103987,
+ 1937.577675,
+ 904.8960685,
+ 3213.152683,
+ 2378.201111,
+ 3694.212352,
+ 2024.008147,
+ 672.4122571,
+ 514.3242082,
+ 566.2439442,
+ 11401.94841,
+ 756.0868363,
+ 1178.223708,
+ 741.6662307,
+ 820.2245876,
+ 1222.359968,
+ 496.5815922,
+ 803.0054535,
+ 21011.49721,
+ 1748.562982,
+ 584.6219709,
+ 581.3688761,
+ 1586.851781,
+ 2575.484158,
+ 1930.194975,
+ 724.9178037,
+ 3746.080948,
+ 954.2092363,
+ 1698.388838,
+ 5047.658563,
+ 590.5806638,
+ 1532.985254,
+ 1597.712056,
+ 1353.759762,
+ 1254.576127,
+ 7765.962636,
+ 1659.652775,
+ 3364.836625,
+ 915.9850592,
+ 1649.660188,
+ 2753.285994,
+ 950.735869,
+ 1773.498265,
+ 799.3621758
+ ]
+ },
+ {
+ "name":"Americas",
+ "text":[
+ "Argentina",
+ "Bolivia",
+ "Brazil",
+ "Canada",
+ "Chile",
+ "Colombia",
+ "Costa Rica",
+ "Cuba",
+ "Dominican Republic",
+ "Ecuador",
+ "El Salvador",
+ "Guatemala",
+ "Haiti",
+ "Honduras",
+ "Jamaica",
+ "Mexico",
+ "Nicaragua",
+ "Panama",
+ "Paraguay",
+ "Peru",
+ "Puerto Rico",
+ "Trinidad and Tobago",
+ "United States",
+ "Uruguay",
+ "Venezuela"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 24779799,
+ 4565872,
+ 100840058,
+ 22284500,
+ 9717524,
+ 22542890,
+ 1834796,
+ 8831348,
+ 4671329,
+ 6298651,
+ 3790903,
+ 5149581,
+ 4698301,
+ 2965146,
+ 1997616,
+ 55984294,
+ 2182908,
+ 1616384,
+ 2614104,
+ 13954700,
+ 2847132,
+ 975199,
+ 209896000,
+ 2829526,
+ 11515649
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 67.065,
+ 46.714,
+ 59.504,
+ 72.88,
+ 63.441,
+ 61.623,
+ 67.849,
+ 70.723,
+ 59.631,
+ 58.796,
+ 58.207,
+ 53.738,
+ 48.042,
+ 53.884,
+ 69,
+ 62.361,
+ 55.151,
+ 66.216,
+ 65.815,
+ 55.448,
+ 72.16,
+ 65.9,
+ 71.34,
+ 68.673,
+ 65.712
+ ],
+ "y":[
+ 9443.038526,
+ 2980.331339,
+ 4985.711467,
+ 18970.57086,
+ 5494.024437,
+ 3264.660041,
+ 5118.146939,
+ 5305.445256,
+ 2189.874499,
+ 5280.99471,
+ 4520.246008,
+ 4031.408271,
+ 1654.456946,
+ 2529.842345,
+ 7433.889293,
+ 6809.40669,
+ 4688.593267,
+ 5364.249663,
+ 2523.337977,
+ 5937.827283,
+ 9123.041742,
+ 6619.551419,
+ 21806.03594,
+ 5703.408898,
+ 10505.25966
+ ]
+ },
+ {
+ "name":"Oceania",
+ "text":[
+ "Australia",
+ "New Zealand"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 13177000,
+ 2929100
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 71.93,
+ 71.89
+ ],
+ "y":[
+ 16788.62948,
+ 16046.03728
+ ]
+ }
+ ],
+ "name":"1972"
+ },
+ {
+ "data":[
+ {
+ "name":"Asia",
+ "text":[
+ "Afghanistan",
+ "Bahrain",
+ "Bangladesh",
+ "Cambodia",
+ "China",
+ "Hong Kong, China",
+ "India",
+ "Indonesia",
+ "Iran",
+ "Iraq",
+ "Israel",
+ "Japan",
+ "Jordan",
+ "Korea, Dem. Rep.",
+ "Korea, Rep.",
+ "Kuwait",
+ "Lebanon",
+ "Malaysia",
+ "Mongolia",
+ "Myanmar",
+ "Nepal",
+ "Oman",
+ "Pakistan",
+ "Philippines",
+ "Saudi Arabia",
+ "Singapore",
+ "Sri Lanka",
+ "Syria",
+ "Taiwan",
+ "Thailand",
+ "Vietnam",
+ "West Bank and Gaza",
+ "Yemen, Rep."
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 14880372,
+ 297410,
+ 80428306,
+ 6978607,
+ 943455000,
+ 4583700,
+ 634000000,
+ 136725000,
+ 35480679,
+ 11882916,
+ 3495918,
+ 113872473,
+ 1937652,
+ 16325320,
+ 36436000,
+ 1140357,
+ 3115787,
+ 12845381,
+ 1528000,
+ 31528087,
+ 13933198,
+ 1004533,
+ 78152686,
+ 46850962,
+ 8128505,
+ 2325300,
+ 14116836,
+ 7932503,
+ 16785196,
+ 44148285,
+ 50533506,
+ 1261091,
+ 8403990
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 38.438,
+ 65.593,
+ 46.923,
+ 31.22,
+ 63.96736,
+ 73.6,
+ 54.208,
+ 52.702,
+ 57.702,
+ 60.413,
+ 73.06,
+ 75.38,
+ 61.134,
+ 67.159,
+ 64.766,
+ 69.343,
+ 66.099,
+ 65.256,
+ 55.491,
+ 56.059,
+ 46.748,
+ 57.367,
+ 54.043,
+ 60.06,
+ 58.69,
+ 70.795,
+ 65.949,
+ 61.195,
+ 70.59,
+ 62.494,
+ 55.764,
+ 60.765,
+ 44.175
+ ],
+ "y":[
+ 786.11336,
+ 19340.10196,
+ 659.8772322,
+ 524.9721832,
+ 741.2374699,
+ 11186.14125,
+ 813.337323,
+ 1382.702056,
+ 11888.59508,
+ 14688.23507,
+ 13306.61921,
+ 16610.37701,
+ 2852.351568,
+ 4106.301249,
+ 4657.22102,
+ 59265.47714,
+ 8659.696836,
+ 3827.921571,
+ 1647.511665,
+ 371,
+ 694.1124398,
+ 11848.34392,
+ 1175.921193,
+ 2373.204287,
+ 34167.7626,
+ 11210.08948,
+ 1348.775651,
+ 3195.484582,
+ 5596.519826,
+ 1961.224635,
+ 713.5371196,
+ 3682.831494,
+ 1829.765177
+ ]
+ },
+ {
+ "name":"Europe",
+ "text":[
+ "Albania",
+ "Austria",
+ "Belgium",
+ "Bosnia and Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Czech Republic",
+ "Denmark",
+ "Finland",
+ "France",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Serbia",
+ "Slovak Republic",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "United Kingdom"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 2509048,
+ 7568430,
+ 9821800,
+ 4086000,
+ 8797022,
+ 4318673,
+ 10161915,
+ 5088419,
+ 4738902,
+ 53165019,
+ 78160773,
+ 9308479,
+ 10637171,
+ 221823,
+ 3271900,
+ 56059245,
+ 560073,
+ 13852989,
+ 4043205,
+ 34621254,
+ 9662600,
+ 21658597,
+ 8686367,
+ 4827803,
+ 1746919,
+ 36439000,
+ 8251648,
+ 6316424,
+ 42404033,
+ 56179000
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 68.93,
+ 72.17,
+ 72.8,
+ 69.86,
+ 70.81,
+ 70.64,
+ 70.71,
+ 74.69,
+ 72.52,
+ 73.83,
+ 72.5,
+ 73.68,
+ 69.95,
+ 76.11,
+ 72.03,
+ 73.48,
+ 73.066,
+ 75.24,
+ 75.37,
+ 70.67,
+ 70.41,
+ 69.46,
+ 70.3,
+ 70.45,
+ 70.97,
+ 74.39,
+ 75.44,
+ 75.39,
+ 59.507,
+ 72.76
+ ],
+ "y":[
+ 3533.00391,
+ 19749.4223,
+ 19117.97448,
+ 3528.481305,
+ 7612.240438,
+ 11305.38517,
+ 14800.16062,
+ 20422.9015,
+ 15605.42283,
+ 18292.63514,
+ 20512.92123,
+ 14195.52428,
+ 11674.83737,
+ 19654.96247,
+ 11150.98113,
+ 14255.98475,
+ 9595.929905,
+ 21209.0592,
+ 23311.34939,
+ 9508.141454,
+ 10172.48572,
+ 9356.39724,
+ 12980.66956,
+ 10922.66404,
+ 15277.03017,
+ 13236.92117,
+ 18855.72521,
+ 26982.29052,
+ 4269.122326,
+ 17428.74846
+ ]
+ },
+ {
+ "name":"Africa",
+ "text":[
+ "Algeria",
+ "Angola",
+ "Benin",
+ "Botswana",
+ "Burkina Faso",
+ "Burundi",
+ "Cameroon",
+ "Central African Republic",
+ "Chad",
+ "Comoros",
+ "Congo, Dem. Rep.",
+ "Congo, Rep.",
+ "Cote d'Ivoire",
+ "Djibouti",
+ "Egypt",
+ "Equatorial Guinea",
+ "Eritrea",
+ "Ethiopia",
+ "Gabon",
+ "Gambia",
+ "Ghana",
+ "Guinea",
+ "Guinea-Bissau",
+ "Kenya",
+ "Lesotho",
+ "Liberia",
+ "Libya",
+ "Madagascar",
+ "Malawi",
+ "Mali",
+ "Mauritania",
+ "Mauritius",
+ "Morocco",
+ "Mozambique",
+ "Namibia",
+ "Niger",
+ "Nigeria",
+ "Reunion",
+ "Rwanda",
+ "Sao Tome and Principe",
+ "Senegal",
+ "Sierra Leone",
+ "Somalia",
+ "South Africa",
+ "Sudan",
+ "Swaziland",
+ "Tanzania",
+ "Togo",
+ "Tunisia",
+ "Uganda",
+ "Zambia",
+ "Zimbabwe"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 17152804,
+ 6162675,
+ 3168267,
+ 781472,
+ 5889574,
+ 3834415,
+ 7959865,
+ 2167533,
+ 4388260,
+ 304739,
+ 26480870,
+ 1536769,
+ 7459574,
+ 228694,
+ 38783863,
+ 192675,
+ 2512642,
+ 34617799,
+ 706367,
+ 608274,
+ 10538093,
+ 4227026,
+ 745228,
+ 14500404,
+ 1251524,
+ 1703617,
+ 2721783,
+ 8007166,
+ 5637246,
+ 6491649,
+ 1456688,
+ 913025,
+ 18396941,
+ 11127868,
+ 977026,
+ 5682086,
+ 62209173,
+ 492095,
+ 4657072,
+ 86796,
+ 5260855,
+ 3140897,
+ 4353666,
+ 27129932,
+ 17104986,
+ 551425,
+ 17129565,
+ 2308582,
+ 6005061,
+ 11457758,
+ 5216550,
+ 6642107
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 58.014,
+ 39.483,
+ 49.19,
+ 59.319,
+ 46.137,
+ 45.91,
+ 49.355,
+ 46.775,
+ 47.383,
+ 50.939,
+ 47.804,
+ 55.625,
+ 52.374,
+ 46.519,
+ 53.319,
+ 42.024,
+ 44.535,
+ 44.51,
+ 52.79,
+ 41.842,
+ 51.756,
+ 40.762,
+ 37.465,
+ 56.155,
+ 52.208,
+ 43.764,
+ 57.442,
+ 46.881,
+ 43.767,
+ 41.714,
+ 50.852,
+ 64.93,
+ 55.73,
+ 42.495,
+ 56.437,
+ 41.291,
+ 44.514,
+ 67.064,
+ 45,
+ 58.55,
+ 48.879,
+ 36.788,
+ 41.974,
+ 55.527,
+ 47.8,
+ 52.537,
+ 49.919,
+ 52.887,
+ 59.837,
+ 50.35,
+ 51.386,
+ 57.674
+ ],
+ "y":[
+ 4910.416756,
+ 3008.647355,
+ 1029.161251,
+ 3214.857818,
+ 743.3870368,
+ 556.1032651,
+ 1783.432873,
+ 1109.374338,
+ 1133.98495,
+ 1172.603047,
+ 795.757282,
+ 3259.178978,
+ 2517.736547,
+ 3081.761022,
+ 2785.493582,
+ 958.5668124,
+ 505.7538077,
+ 556.8083834,
+ 21745.57328,
+ 884.7552507,
+ 993.2239571,
+ 874.6858643,
+ 764.7259628,
+ 1267.613204,
+ 745.3695408,
+ 640.3224383,
+ 21951.21176,
+ 1544.228586,
+ 663.2236766,
+ 686.3952693,
+ 1497.492223,
+ 3710.982963,
+ 2370.619976,
+ 502.3197334,
+ 3876.485958,
+ 808.8970728,
+ 1981.951806,
+ 4319.804067,
+ 670.0806011,
+ 1737.561657,
+ 1561.769116,
+ 1348.285159,
+ 1450.992513,
+ 8028.651439,
+ 2202.988423,
+ 3781.410618,
+ 962.4922932,
+ 1532.776998,
+ 3120.876811,
+ 843.7331372,
+ 1588.688299,
+ 685.5876821
+ ]
+ },
+ {
+ "name":"Americas",
+ "text":[
+ "Argentina",
+ "Bolivia",
+ "Brazil",
+ "Canada",
+ "Chile",
+ "Colombia",
+ "Costa Rica",
+ "Cuba",
+ "Dominican Republic",
+ "Ecuador",
+ "El Salvador",
+ "Guatemala",
+ "Haiti",
+ "Honduras",
+ "Jamaica",
+ "Mexico",
+ "Nicaragua",
+ "Panama",
+ "Paraguay",
+ "Peru",
+ "Puerto Rico",
+ "Trinidad and Tobago",
+ "United States",
+ "Uruguay",
+ "Venezuela"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 26983828,
+ 5079716,
+ 114313951,
+ 23796400,
+ 10599793,
+ 25094412,
+ 2108457,
+ 9537988,
+ 5302800,
+ 7278866,
+ 4282586,
+ 5703430,
+ 4908554,
+ 3055235,
+ 2156814,
+ 63759976,
+ 2554598,
+ 1839782,
+ 2984494,
+ 15990099,
+ 3080828,
+ 1039009,
+ 220239000,
+ 2873520,
+ 13503563
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 68.481,
+ 50.023,
+ 61.489,
+ 74.21,
+ 67.052,
+ 63.837,
+ 70.75,
+ 72.649,
+ 61.788,
+ 61.31,
+ 56.696,
+ 56.029,
+ 49.923,
+ 57.402,
+ 70.11,
+ 65.032,
+ 57.47,
+ 68.681,
+ 66.353,
+ 58.447,
+ 73.44,
+ 68.3,
+ 73.38,
+ 69.481,
+ 67.456
+ ],
+ "y":[
+ 10079.02674,
+ 3548.097832,
+ 6660.118654,
+ 22090.88306,
+ 4756.763836,
+ 3815.80787,
+ 5926.876967,
+ 6380.494966,
+ 2681.9889,
+ 6679.62326,
+ 5138.922374,
+ 4879.992748,
+ 1874.298931,
+ 3203.208066,
+ 6650.195573,
+ 7674.929108,
+ 5486.371089,
+ 5351.912144,
+ 3248.373311,
+ 6281.290855,
+ 9770.524921,
+ 7899.554209,
+ 24072.63213,
+ 6504.339663,
+ 13143.95095
+ ]
+ },
+ {
+ "name":"Oceania",
+ "text":[
+ "Australia",
+ "New Zealand"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 14074100,
+ 3164900
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 73.49,
+ 72.22
+ ],
+ "y":[
+ 18334.19751,
+ 16233.7177
+ ]
+ }
+ ],
+ "name":"1977"
+ },
+ {
+ "data":[
+ {
+ "name":"Asia",
+ "text":[
+ "Afghanistan",
+ "Bahrain",
+ "Bangladesh",
+ "Cambodia",
+ "China",
+ "Hong Kong, China",
+ "India",
+ "Indonesia",
+ "Iran",
+ "Iraq",
+ "Israel",
+ "Japan",
+ "Jordan",
+ "Korea, Dem. Rep.",
+ "Korea, Rep.",
+ "Kuwait",
+ "Lebanon",
+ "Malaysia",
+ "Mongolia",
+ "Myanmar",
+ "Nepal",
+ "Oman",
+ "Pakistan",
+ "Philippines",
+ "Saudi Arabia",
+ "Singapore",
+ "Sri Lanka",
+ "Syria",
+ "Taiwan",
+ "Thailand",
+ "Vietnam",
+ "West Bank and Gaza",
+ "Yemen, Rep."
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 12881816,
+ 377967,
+ 93074406,
+ 7272485,
+ 1000281000,
+ 5264500,
+ 708000000,
+ 153343000,
+ 43072751,
+ 14173318,
+ 3858421,
+ 118454974,
+ 2347031,
+ 17647518,
+ 39326000,
+ 1497494,
+ 3086876,
+ 14441916,
+ 1756032,
+ 34680442,
+ 15796314,
+ 1301048,
+ 91462088,
+ 53456774,
+ 11254672,
+ 2651869,
+ 15410151,
+ 9410494,
+ 18501390,
+ 48827160,
+ 56142181,
+ 1425876,
+ 9657618
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 39.854,
+ 69.052,
+ 50.009,
+ 50.957,
+ 65.525,
+ 75.45,
+ 56.596,
+ 56.159,
+ 59.62,
+ 62.038,
+ 74.45,
+ 77.11,
+ 63.739,
+ 69.1,
+ 67.123,
+ 71.309,
+ 66.983,
+ 68,
+ 57.489,
+ 58.056,
+ 49.594,
+ 62.728,
+ 56.158,
+ 62.082,
+ 63.012,
+ 71.76,
+ 68.757,
+ 64.59,
+ 72.16,
+ 64.597,
+ 58.816,
+ 64.406,
+ 49.113
+ ],
+ "y":[
+ 978.0114388,
+ 19211.14731,
+ 676.9818656,
+ 624.4754784,
+ 962.4213805,
+ 14560.53051,
+ 855.7235377,
+ 1516.872988,
+ 7608.334602,
+ 14517.90711,
+ 15367.0292,
+ 19384.10571,
+ 4161.415959,
+ 4106.525293,
+ 5622.942464,
+ 31354.03573,
+ 7640.519521,
+ 4920.355951,
+ 2000.603139,
+ 424,
+ 718.3730947,
+ 12954.79101,
+ 1443.429832,
+ 2603.273765,
+ 33693.17525,
+ 15169.16112,
+ 1648.079789,
+ 3761.837715,
+ 7426.354774,
+ 2393.219781,
+ 707.2357863,
+ 4336.032082,
+ 1977.55701
+ ]
+ },
+ {
+ "name":"Europe",
+ "text":[
+ "Albania",
+ "Austria",
+ "Belgium",
+ "Bosnia and Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Czech Republic",
+ "Denmark",
+ "Finland",
+ "France",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Serbia",
+ "Slovak Republic",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "United Kingdom"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 2780097,
+ 7574613,
+ 9856303,
+ 4172693,
+ 8892098,
+ 4413368,
+ 10303704,
+ 5117810,
+ 4826933,
+ 54433565,
+ 78335266,
+ 9786480,
+ 10705535,
+ 233997,
+ 3480000,
+ 56535636,
+ 562548,
+ 14310401,
+ 4114787,
+ 36227381,
+ 9859650,
+ 22356726,
+ 9032824,
+ 5048043,
+ 1861252,
+ 37983310,
+ 8325260,
+ 6468126,
+ 47328791,
+ 56339704
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 70.42,
+ 73.18,
+ 73.93,
+ 70.69,
+ 71.08,
+ 70.46,
+ 70.96,
+ 74.63,
+ 74.55,
+ 74.89,
+ 73.8,
+ 75.24,
+ 69.39,
+ 76.99,
+ 73.1,
+ 74.98,
+ 74.101,
+ 76.05,
+ 75.97,
+ 71.32,
+ 72.77,
+ 69.66,
+ 70.162,
+ 70.8,
+ 71.063,
+ 76.3,
+ 76.42,
+ 76.21,
+ 61.036,
+ 74.04
+ ],
+ "y":[
+ 3630.880722,
+ 21597.08362,
+ 20979.84589,
+ 4126.613157,
+ 8224.191647,
+ 13221.82184,
+ 15377.22855,
+ 21688.04048,
+ 18533.15761,
+ 20293.89746,
+ 22031.53274,
+ 15268.42089,
+ 12545.99066,
+ 23269.6075,
+ 12618.32141,
+ 16537.4835,
+ 11222.58762,
+ 21399.46046,
+ 26298.63531,
+ 8451.531004,
+ 11753.84291,
+ 9605.314053,
+ 15181.0927,
+ 11348.54585,
+ 17866.72175,
+ 13926.16997,
+ 20667.38125,
+ 28397.71512,
+ 4241.356344,
+ 18232.42452
+ ]
+ },
+ {
+ "name":"Africa",
+ "text":[
+ "Algeria",
+ "Angola",
+ "Benin",
+ "Botswana",
+ "Burkina Faso",
+ "Burundi",
+ "Cameroon",
+ "Central African Republic",
+ "Chad",
+ "Comoros",
+ "Congo, Dem. Rep.",
+ "Congo, Rep.",
+ "Cote d'Ivoire",
+ "Djibouti",
+ "Egypt",
+ "Equatorial Guinea",
+ "Eritrea",
+ "Ethiopia",
+ "Gabon",
+ "Gambia",
+ "Ghana",
+ "Guinea",
+ "Guinea-Bissau",
+ "Kenya",
+ "Lesotho",
+ "Liberia",
+ "Libya",
+ "Madagascar",
+ "Malawi",
+ "Mali",
+ "Mauritania",
+ "Mauritius",
+ "Morocco",
+ "Mozambique",
+ "Namibia",
+ "Niger",
+ "Nigeria",
+ "Reunion",
+ "Rwanda",
+ "Sao Tome and Principe",
+ "Senegal",
+ "Sierra Leone",
+ "Somalia",
+ "South Africa",
+ "Sudan",
+ "Swaziland",
+ "Tanzania",
+ "Togo",
+ "Tunisia",
+ "Uganda",
+ "Zambia",
+ "Zimbabwe"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 20033753,
+ 7016384,
+ 3641603,
+ 970347,
+ 6634596,
+ 4580410,
+ 9250831,
+ 2476971,
+ 4875118,
+ 348643,
+ 30646495,
+ 1774735,
+ 9025951,
+ 305991,
+ 45681811,
+ 285483,
+ 2637297,
+ 38111756,
+ 753874,
+ 715523,
+ 11400338,
+ 4710497,
+ 825987,
+ 17661452,
+ 1411807,
+ 1956875,
+ 3344074,
+ 9171477,
+ 6502825,
+ 6998256,
+ 1622136,
+ 992040,
+ 20198730,
+ 12587223,
+ 1099010,
+ 6437188,
+ 73039376,
+ 517810,
+ 5507565,
+ 98593,
+ 6147783,
+ 3464522,
+ 5828892,
+ 31140029,
+ 20367053,
+ 649901,
+ 19844382,
+ 2644765,
+ 6734098,
+ 12939400,
+ 6100407,
+ 7636524
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 61.368,
+ 39.942,
+ 50.904,
+ 61.484,
+ 48.122,
+ 47.471,
+ 52.961,
+ 48.295,
+ 49.517,
+ 52.933,
+ 47.784,
+ 56.695,
+ 53.983,
+ 48.812,
+ 56.006,
+ 43.662,
+ 43.89,
+ 44.916,
+ 56.564,
+ 45.58,
+ 53.744,
+ 42.891,
+ 39.327,
+ 58.766,
+ 55.078,
+ 44.852,
+ 62.155,
+ 48.969,
+ 45.642,
+ 43.916,
+ 53.599,
+ 66.711,
+ 59.65,
+ 42.795,
+ 58.968,
+ 42.598,
+ 45.826,
+ 69.885,
+ 46.218,
+ 60.351,
+ 52.379,
+ 38.445,
+ 42.955,
+ 58.161,
+ 50.338,
+ 55.561,
+ 50.608,
+ 55.471,
+ 64.048,
+ 49.849,
+ 51.821,
+ 60.363
+ ],
+ "y":[
+ 5745.160213,
+ 2756.953672,
+ 1277.897616,
+ 4551.14215,
+ 807.1985855,
+ 559.603231,
+ 2367.983282,
+ 956.7529907,
+ 797.9081006,
+ 1267.100083,
+ 673.7478181,
+ 4879.507522,
+ 2602.710169,
+ 2879.468067,
+ 3503.729636,
+ 927.8253427,
+ 524.8758493,
+ 577.8607471,
+ 15113.36194,
+ 835.8096108,
+ 876.032569,
+ 857.2503577,
+ 838.1239671,
+ 1348.225791,
+ 797.2631074,
+ 572.1995694,
+ 17364.27538,
+ 1302.878658,
+ 632.8039209,
+ 618.0140641,
+ 1481.150189,
+ 3688.037739,
+ 2702.620356,
+ 462.2114149,
+ 4191.100511,
+ 909.7221354,
+ 1576.97375,
+ 5267.219353,
+ 881.5706467,
+ 1890.218117,
+ 1518.479984,
+ 1465.010784,
+ 1176.807031,
+ 8568.266228,
+ 1895.544073,
+ 3895.384018,
+ 874.2426069,
+ 1344.577953,
+ 3560.233174,
+ 682.2662268,
+ 1408.678565,
+ 788.8550411
+ ]
+ },
+ {
+ "name":"Americas",
+ "text":[
+ "Argentina",
+ "Bolivia",
+ "Brazil",
+ "Canada",
+ "Chile",
+ "Colombia",
+ "Costa Rica",
+ "Cuba",
+ "Dominican Republic",
+ "Ecuador",
+ "El Salvador",
+ "Guatemala",
+ "Haiti",
+ "Honduras",
+ "Jamaica",
+ "Mexico",
+ "Nicaragua",
+ "Panama",
+ "Paraguay",
+ "Peru",
+ "Puerto Rico",
+ "Trinidad and Tobago",
+ "United States",
+ "Uruguay",
+ "Venezuela"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 29341374,
+ 5642224,
+ 128962939,
+ 25201900,
+ 11487112,
+ 27764644,
+ 2424367,
+ 9789224,
+ 5968349,
+ 8365850,
+ 4474873,
+ 6395630,
+ 5198399,
+ 3669448,
+ 2298309,
+ 71640904,
+ 2979423,
+ 2036305,
+ 3366439,
+ 18125129,
+ 3279001,
+ 1116479,
+ 232187835,
+ 2953997,
+ 15620766
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 69.942,
+ 53.859,
+ 63.336,
+ 75.76,
+ 70.565,
+ 66.653,
+ 73.45,
+ 73.717,
+ 63.727,
+ 64.342,
+ 56.604,
+ 58.137,
+ 51.461,
+ 60.909,
+ 71.21,
+ 67.405,
+ 59.298,
+ 70.472,
+ 66.874,
+ 61.406,
+ 73.75,
+ 68.832,
+ 74.65,
+ 70.805,
+ 68.557
+ ],
+ "y":[
+ 8997.897412,
+ 3156.510452,
+ 7030.835878,
+ 22898.79214,
+ 5095.665738,
+ 4397.575659,
+ 5262.734751,
+ 7316.918107,
+ 2861.092386,
+ 7213.791267,
+ 4098.344175,
+ 4820.49479,
+ 2011.159549,
+ 3121.760794,
+ 6068.05135,
+ 9611.147541,
+ 3470.338156,
+ 7009.601598,
+ 4258.503604,
+ 6434.501797,
+ 10330.98915,
+ 9119.528607,
+ 25009.55914,
+ 6920.223051,
+ 11152.41011
+ ]
+ },
+ {
+ "name":"Oceania",
+ "text":[
+ "Australia",
+ "New Zealand"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 15184200,
+ 3210650
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 74.74,
+ 73.84
+ ],
+ "y":[
+ 19477.00928,
+ 17632.4104
+ ]
+ }
+ ],
+ "name":"1982"
+ },
+ {
+ "data":[
+ {
+ "name":"Asia",
+ "text":[
+ "Afghanistan",
+ "Bahrain",
+ "Bangladesh",
+ "Cambodia",
+ "China",
+ "Hong Kong, China",
+ "India",
+ "Indonesia",
+ "Iran",
+ "Iraq",
+ "Israel",
+ "Japan",
+ "Jordan",
+ "Korea, Dem. Rep.",
+ "Korea, Rep.",
+ "Kuwait",
+ "Lebanon",
+ "Malaysia",
+ "Mongolia",
+ "Myanmar",
+ "Nepal",
+ "Oman",
+ "Pakistan",
+ "Philippines",
+ "Saudi Arabia",
+ "Singapore",
+ "Sri Lanka",
+ "Syria",
+ "Taiwan",
+ "Thailand",
+ "Vietnam",
+ "West Bank and Gaza",
+ "Yemen, Rep."
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 13867957,
+ 454612,
+ 103764241,
+ 8371791,
+ 1084035000,
+ 5584510,
+ 788000000,
+ 169276000,
+ 51889696,
+ 16543189,
+ 4203148,
+ 122091325,
+ 2820042,
+ 19067554,
+ 41622000,
+ 1891487,
+ 3089353,
+ 16331785,
+ 2015133,
+ 38028578,
+ 17917180,
+ 1593882,
+ 105186881,
+ 60017788,
+ 14619745,
+ 2794552,
+ 16495304,
+ 11242847,
+ 19757799,
+ 52910342,
+ 62826491,
+ 1691210,
+ 11219340
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 40.822,
+ 70.75,
+ 52.819,
+ 53.914,
+ 67.274,
+ 76.2,
+ 58.553,
+ 60.137,
+ 63.04,
+ 65.044,
+ 75.6,
+ 78.67,
+ 65.869,
+ 70.647,
+ 69.81,
+ 74.174,
+ 67.926,
+ 69.5,
+ 60.222,
+ 58.339,
+ 52.537,
+ 67.734,
+ 58.245,
+ 64.151,
+ 66.295,
+ 73.56,
+ 69.011,
+ 66.974,
+ 73.4,
+ 66.084,
+ 62.82,
+ 67.046,
+ 52.922
+ ],
+ "y":[
+ 852.3959448,
+ 18524.02406,
+ 751.9794035,
+ 683.8955732,
+ 1378.904018,
+ 20038.47269,
+ 976.5126756,
+ 1748.356961,
+ 6642.881371,
+ 11643.57268,
+ 17122.47986,
+ 22375.94189,
+ 4448.679912,
+ 4106.492315,
+ 8533.088805,
+ 28118.42998,
+ 5377.091329,
+ 5249.802653,
+ 2338.008304,
+ 385,
+ 775.6324501,
+ 18115.22313,
+ 1704.686583,
+ 2189.634995,
+ 21198.26136,
+ 18861.53081,
+ 1876.766827,
+ 3116.774285,
+ 11054.56175,
+ 2982.653773,
+ 820.7994449,
+ 5107.197384,
+ 1971.741538
+ ]
+ },
+ {
+ "name":"Europe",
+ "text":[
+ "Albania",
+ "Austria",
+ "Belgium",
+ "Bosnia and Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Czech Republic",
+ "Denmark",
+ "Finland",
+ "France",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Serbia",
+ "Slovak Republic",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "United Kingdom"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 3075321,
+ 7578903,
+ 9870200,
+ 4338977,
+ 8971958,
+ 4484310,
+ 10311597,
+ 5127024,
+ 4931729,
+ 55630100,
+ 77718298,
+ 9974490,
+ 10612740,
+ 244676,
+ 3539900,
+ 56729703,
+ 569473,
+ 14665278,
+ 4186147,
+ 37740710,
+ 9915289,
+ 22686371,
+ 9230783,
+ 5199318,
+ 1945870,
+ 38880702,
+ 8421403,
+ 6649942,
+ 52881328,
+ 56981620
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 72,
+ 74.94,
+ 75.35,
+ 71.14,
+ 71.34,
+ 71.52,
+ 71.58,
+ 74.8,
+ 74.83,
+ 76.34,
+ 74.847,
+ 76.67,
+ 69.58,
+ 77.23,
+ 74.36,
+ 76.42,
+ 74.865,
+ 76.83,
+ 75.89,
+ 70.98,
+ 74.06,
+ 69.53,
+ 71.218,
+ 71.08,
+ 72.25,
+ 76.9,
+ 77.19,
+ 77.41,
+ 63.108,
+ 75.007
+ ],
+ "y":[
+ 3738.932735,
+ 23687.82607,
+ 22525.56308,
+ 4314.114757,
+ 8239.854824,
+ 13822.58394,
+ 16310.4434,
+ 25116.17581,
+ 21141.01223,
+ 22066.44214,
+ 24639.18566,
+ 16120.52839,
+ 12986.47998,
+ 26923.20628,
+ 13872.86652,
+ 19207.23482,
+ 11732.51017,
+ 23651.32361,
+ 31540.9748,
+ 9082.351172,
+ 13039.30876,
+ 9696.273295,
+ 15870.87851,
+ 12037.26758,
+ 18678.53492,
+ 15764.98313,
+ 23586.92927,
+ 30281.70459,
+ 5089.043686,
+ 21664.78767
+ ]
+ },
+ {
+ "name":"Africa",
+ "text":[
+ "Algeria",
+ "Angola",
+ "Benin",
+ "Botswana",
+ "Burkina Faso",
+ "Burundi",
+ "Cameroon",
+ "Central African Republic",
+ "Chad",
+ "Comoros",
+ "Congo, Dem. Rep.",
+ "Congo, Rep.",
+ "Cote d'Ivoire",
+ "Djibouti",
+ "Egypt",
+ "Equatorial Guinea",
+ "Eritrea",
+ "Ethiopia",
+ "Gabon",
+ "Gambia",
+ "Ghana",
+ "Guinea",
+ "Guinea-Bissau",
+ "Kenya",
+ "Lesotho",
+ "Liberia",
+ "Libya",
+ "Madagascar",
+ "Malawi",
+ "Mali",
+ "Mauritania",
+ "Mauritius",
+ "Morocco",
+ "Mozambique",
+ "Namibia",
+ "Niger",
+ "Nigeria",
+ "Reunion",
+ "Rwanda",
+ "Sao Tome and Principe",
+ "Senegal",
+ "Sierra Leone",
+ "Somalia",
+ "South Africa",
+ "Sudan",
+ "Swaziland",
+ "Tanzania",
+ "Togo",
+ "Tunisia",
+ "Uganda",
+ "Zambia",
+ "Zimbabwe"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 23254956,
+ 7874230,
+ 4243788,
+ 1151184,
+ 7586551,
+ 5126023,
+ 10780667,
+ 2840009,
+ 5498955,
+ 395114,
+ 35481645,
+ 2064095,
+ 10761098,
+ 311025,
+ 52799062,
+ 341244,
+ 2915959,
+ 42999530,
+ 880397,
+ 848406,
+ 14168101,
+ 5650262,
+ 927524,
+ 21198082,
+ 1599200,
+ 2269414,
+ 3799845,
+ 10568642,
+ 7824747,
+ 7634008,
+ 1841240,
+ 1042663,
+ 22987397,
+ 12891952,
+ 1278184,
+ 7332638,
+ 81551520,
+ 562035,
+ 6349365,
+ 110812,
+ 7171347,
+ 3868905,
+ 6921858,
+ 35933379,
+ 24725960,
+ 779348,
+ 23040630,
+ 3154264,
+ 7724976,
+ 15283050,
+ 7272406,
+ 9216418
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 65.799,
+ 39.906,
+ 52.337,
+ 63.622,
+ 49.557,
+ 48.211,
+ 54.985,
+ 50.485,
+ 51.051,
+ 54.926,
+ 47.412,
+ 57.47,
+ 54.655,
+ 50.04,
+ 59.797,
+ 45.664,
+ 46.453,
+ 46.684,
+ 60.19,
+ 49.265,
+ 55.729,
+ 45.552,
+ 41.245,
+ 59.339,
+ 57.18,
+ 46.027,
+ 66.234,
+ 49.35,
+ 47.457,
+ 46.364,
+ 56.145,
+ 68.74,
+ 62.677,
+ 42.861,
+ 60.835,
+ 44.555,
+ 46.886,
+ 71.913,
+ 44.02,
+ 61.728,
+ 55.769,
+ 40.006,
+ 44.501,
+ 60.834,
+ 51.744,
+ 57.678,
+ 51.535,
+ 56.941,
+ 66.894,
+ 51.509,
+ 50.821,
+ 62.351
+ ],
+ "y":[
+ 5681.358539,
+ 2430.208311,
+ 1225.85601,
+ 6205.88385,
+ 912.0631417,
+ 621.8188189,
+ 2602.664206,
+ 844.8763504,
+ 952.386129,
+ 1315.980812,
+ 672.774812,
+ 4201.194937,
+ 2156.956069,
+ 2880.102568,
+ 3885.46071,
+ 966.8968149,
+ 521.1341333,
+ 573.7413142,
+ 11864.40844,
+ 611.6588611,
+ 847.0061135,
+ 805.5724718,
+ 736.4153921,
+ 1361.936856,
+ 773.9932141,
+ 506.1138573,
+ 11770.5898,
+ 1155.441948,
+ 635.5173634,
+ 684.1715576,
+ 1421.603576,
+ 4783.586903,
+ 2755.046991,
+ 389.8761846,
+ 3693.731337,
+ 668.3000228,
+ 1385.029563,
+ 5303.377488,
+ 847.991217,
+ 1516.525457,
+ 1441.72072,
+ 1294.447788,
+ 1093.244963,
+ 7825.823398,
+ 1507.819159,
+ 3984.839812,
+ 831.8220794,
+ 1202.201361,
+ 3810.419296,
+ 617.7244065,
+ 1213.315116,
+ 706.1573059
+ ]
+ },
+ {
+ "name":"Americas",
+ "text":[
+ "Argentina",
+ "Bolivia",
+ "Brazil",
+ "Canada",
+ "Chile",
+ "Colombia",
+ "Costa Rica",
+ "Cuba",
+ "Dominican Republic",
+ "Ecuador",
+ "El Salvador",
+ "Guatemala",
+ "Haiti",
+ "Honduras",
+ "Jamaica",
+ "Mexico",
+ "Nicaragua",
+ "Panama",
+ "Paraguay",
+ "Peru",
+ "Puerto Rico",
+ "Trinidad and Tobago",
+ "United States",
+ "Uruguay",
+ "Venezuela"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 31620918,
+ 6156369,
+ 142938076,
+ 26549700,
+ 12463354,
+ 30964245,
+ 2799811,
+ 10239839,
+ 6655297,
+ 9545158,
+ 4842194,
+ 7326406,
+ 5756203,
+ 4372203,
+ 2326606,
+ 80122492,
+ 3344353,
+ 2253639,
+ 3886512,
+ 20195924,
+ 3444468,
+ 1191336,
+ 242803533,
+ 3045153,
+ 17910182
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 70.774,
+ 57.251,
+ 65.205,
+ 76.86,
+ 72.492,
+ 67.768,
+ 74.752,
+ 74.174,
+ 66.046,
+ 67.231,
+ 63.154,
+ 60.782,
+ 53.636,
+ 64.492,
+ 71.77,
+ 69.498,
+ 62.008,
+ 71.523,
+ 67.378,
+ 64.134,
+ 74.63,
+ 69.582,
+ 75.02,
+ 71.918,
+ 70.19
+ ],
+ "y":[
+ 9139.671389,
+ 2753.69149,
+ 7807.095818,
+ 26626.51503,
+ 5547.063754,
+ 4903.2191,
+ 5629.915318,
+ 7532.924763,
+ 2899.842175,
+ 6481.776993,
+ 4140.442097,
+ 4246.485974,
+ 1823.015995,
+ 3023.096699,
+ 6351.237495,
+ 8688.156003,
+ 2955.984375,
+ 7034.779161,
+ 3998.875695,
+ 6360.943444,
+ 12281.34191,
+ 7388.597823,
+ 29884.35041,
+ 7452.398969,
+ 9883.584648
+ ]
+ },
+ {
+ "name":"Oceania",
+ "text":[
+ "Australia",
+ "New Zealand"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 16257249,
+ 3317166
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 76.32,
+ 74.32
+ ],
+ "y":[
+ 21888.88903,
+ 19007.19129
+ ]
+ }
+ ],
+ "name":"1987"
+ },
+ {
+ "data":[
+ {
+ "name":"Asia",
+ "text":[
+ "Afghanistan",
+ "Bahrain",
+ "Bangladesh",
+ "Cambodia",
+ "China",
+ "Hong Kong, China",
+ "India",
+ "Indonesia",
+ "Iran",
+ "Iraq",
+ "Israel",
+ "Japan",
+ "Jordan",
+ "Korea, Dem. Rep.",
+ "Korea, Rep.",
+ "Kuwait",
+ "Lebanon",
+ "Malaysia",
+ "Mongolia",
+ "Myanmar",
+ "Nepal",
+ "Oman",
+ "Pakistan",
+ "Philippines",
+ "Saudi Arabia",
+ "Singapore",
+ "Sri Lanka",
+ "Syria",
+ "Taiwan",
+ "Thailand",
+ "Vietnam",
+ "West Bank and Gaza",
+ "Yemen, Rep."
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 16317921,
+ 529491,
+ 113704579,
+ 10150094,
+ 1164970000,
+ 5829696,
+ 872000000,
+ 184816000,
+ 60397973,
+ 17861905,
+ 4936550,
+ 124329269,
+ 3867409,
+ 20711375,
+ 43805450,
+ 1418095,
+ 3219994,
+ 18319502,
+ 2312802,
+ 40546538,
+ 20326209,
+ 1915208,
+ 120065004,
+ 67185766,
+ 16945857,
+ 3235865,
+ 17587060,
+ 13219062,
+ 20686918,
+ 56667095,
+ 69940728,
+ 2104779,
+ 13367997
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 41.674,
+ 72.601,
+ 56.018,
+ 55.803,
+ 68.69,
+ 77.601,
+ 60.223,
+ 62.681,
+ 65.742,
+ 59.461,
+ 76.93,
+ 79.36,
+ 68.015,
+ 69.978,
+ 72.244,
+ 75.19,
+ 69.292,
+ 70.693,
+ 61.271,
+ 59.32,
+ 55.727,
+ 71.197,
+ 60.838,
+ 66.458,
+ 68.768,
+ 75.788,
+ 70.379,
+ 69.249,
+ 74.26,
+ 67.298,
+ 67.662,
+ 69.718,
+ 55.599
+ ],
+ "y":[
+ 649.3413952,
+ 19035.57917,
+ 837.8101643,
+ 682.3031755,
+ 1655.784158,
+ 24757.60301,
+ 1164.406809,
+ 2383.140898,
+ 7235.653188,
+ 3745.640687,
+ 18051.52254,
+ 26824.89511,
+ 3431.593647,
+ 3726.063507,
+ 12104.27872,
+ 34932.91959,
+ 6890.806854,
+ 7277.912802,
+ 1785.402016,
+ 347,
+ 897.7403604,
+ 18616.70691,
+ 1971.829464,
+ 2279.324017,
+ 24841.61777,
+ 24769.8912,
+ 2153.739222,
+ 3340.542768,
+ 15215.6579,
+ 4616.896545,
+ 989.0231487,
+ 6017.654756,
+ 1879.496673
+ ]
+ },
+ {
+ "name":"Europe",
+ "text":[
+ "Albania",
+ "Austria",
+ "Belgium",
+ "Bosnia and Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Czech Republic",
+ "Denmark",
+ "Finland",
+ "France",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Serbia",
+ "Slovak Republic",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "United Kingdom"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 3326498,
+ 7914969,
+ 10045622,
+ 4256013,
+ 8658506,
+ 4494013,
+ 10315702,
+ 5171393,
+ 5041039,
+ 57374179,
+ 80597764,
+ 10325429,
+ 10348684,
+ 259012,
+ 3557761,
+ 56840847,
+ 621621,
+ 15174244,
+ 4286357,
+ 38370697,
+ 9927680,
+ 22797027,
+ 9826397,
+ 5302888,
+ 1999210,
+ 39549438,
+ 8718867,
+ 6995447,
+ 58179144,
+ 57866349
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 71.581,
+ 76.04,
+ 76.46,
+ 72.178,
+ 71.19,
+ 72.527,
+ 72.4,
+ 75.33,
+ 75.7,
+ 77.46,
+ 76.07,
+ 77.03,
+ 69.17,
+ 78.77,
+ 75.467,
+ 77.44,
+ 75.435,
+ 77.42,
+ 77.32,
+ 70.99,
+ 74.86,
+ 69.36,
+ 71.659,
+ 71.38,
+ 73.64,
+ 77.57,
+ 78.16,
+ 78.03,
+ 66.146,
+ 76.42
+ ],
+ "y":[
+ 2497.437901,
+ 27042.01868,
+ 25575.57069,
+ 2546.781445,
+ 6302.623438,
+ 8447.794873,
+ 14297.02122,
+ 26406.73985,
+ 20647.16499,
+ 24703.79615,
+ 26505.30317,
+ 17541.49634,
+ 10535.62855,
+ 25144.39201,
+ 17558.81555,
+ 22013.64486,
+ 7003.339037,
+ 26790.94961,
+ 33965.66115,
+ 7738.881247,
+ 16207.26663,
+ 6598.409903,
+ 9325.068238,
+ 9498.467723,
+ 14214.71681,
+ 18603.06452,
+ 23880.01683,
+ 31871.5303,
+ 5678.348271,
+ 22705.09254
+ ]
+ },
+ {
+ "name":"Africa",
+ "text":[
+ "Algeria",
+ "Angola",
+ "Benin",
+ "Botswana",
+ "Burkina Faso",
+ "Burundi",
+ "Cameroon",
+ "Central African Republic",
+ "Chad",
+ "Comoros",
+ "Congo, Dem. Rep.",
+ "Congo, Rep.",
+ "Cote d'Ivoire",
+ "Djibouti",
+ "Egypt",
+ "Equatorial Guinea",
+ "Eritrea",
+ "Ethiopia",
+ "Gabon",
+ "Gambia",
+ "Ghana",
+ "Guinea",
+ "Guinea-Bissau",
+ "Kenya",
+ "Lesotho",
+ "Liberia",
+ "Libya",
+ "Madagascar",
+ "Malawi",
+ "Mali",
+ "Mauritania",
+ "Mauritius",
+ "Morocco",
+ "Mozambique",
+ "Namibia",
+ "Niger",
+ "Nigeria",
+ "Reunion",
+ "Rwanda",
+ "Sao Tome and Principe",
+ "Senegal",
+ "Sierra Leone",
+ "Somalia",
+ "South Africa",
+ "Sudan",
+ "Swaziland",
+ "Tanzania",
+ "Togo",
+ "Tunisia",
+ "Uganda",
+ "Zambia",
+ "Zimbabwe"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 26298373,
+ 8735988,
+ 4981671,
+ 1342614,
+ 8878303,
+ 5809236,
+ 12467171,
+ 3265124,
+ 6429417,
+ 454429,
+ 41672143,
+ 2409073,
+ 12772596,
+ 384156,
+ 59402198,
+ 387838,
+ 3668440,
+ 52088559,
+ 985739,
+ 1025384,
+ 16278738,
+ 6990574,
+ 1050938,
+ 25020539,
+ 1803195,
+ 1912974,
+ 4364501,
+ 12210395,
+ 10014249,
+ 8416215,
+ 2119465,
+ 1096202,
+ 25798239,
+ 13160731,
+ 1554253,
+ 8392818,
+ 93364244,
+ 622191,
+ 7290203,
+ 125911,
+ 8307920,
+ 4260884,
+ 6099799,
+ 39964159,
+ 28227588,
+ 962344,
+ 26605473,
+ 3747553,
+ 8523077,
+ 18252190,
+ 8381163,
+ 10704340
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 67.744,
+ 40.647,
+ 53.919,
+ 62.745,
+ 50.26,
+ 44.736,
+ 54.314,
+ 49.396,
+ 51.724,
+ 57.939,
+ 45.548,
+ 56.433,
+ 52.044,
+ 51.604,
+ 63.674,
+ 47.545,
+ 49.991,
+ 48.091,
+ 61.366,
+ 52.644,
+ 57.501,
+ 48.576,
+ 43.266,
+ 59.285,
+ 59.685,
+ 40.802,
+ 68.755,
+ 52.214,
+ 49.42,
+ 48.388,
+ 58.333,
+ 69.745,
+ 65.393,
+ 44.284,
+ 61.999,
+ 47.391,
+ 47.472,
+ 73.615,
+ 23.599,
+ 62.742,
+ 58.196,
+ 38.333,
+ 39.658,
+ 61.888,
+ 53.556,
+ 58.474,
+ 50.44,
+ 58.061,
+ 70.001,
+ 48.825,
+ 46.1,
+ 60.377
+ ],
+ "y":[
+ 5023.216647,
+ 2627.845685,
+ 1191.207681,
+ 7954.111645,
+ 931.7527731,
+ 631.6998778,
+ 1793.163278,
+ 747.9055252,
+ 1058.0643,
+ 1246.90737,
+ 457.7191807,
+ 4016.239529,
+ 1648.073791,
+ 2377.156192,
+ 3794.755195,
+ 1132.055034,
+ 582.8585102,
+ 421.3534653,
+ 13522.15752,
+ 665.6244126,
+ 925.060154,
+ 794.3484384,
+ 745.5398706,
+ 1341.921721,
+ 977.4862725,
+ 636.6229191,
+ 9640.138501,
+ 1040.67619,
+ 563.2000145,
+ 739.014375,
+ 1361.369784,
+ 6058.253846,
+ 2948.047252,
+ 410.8968239,
+ 3804.537999,
+ 581.182725,
+ 1619.848217,
+ 6101.255823,
+ 737.0685949,
+ 1428.777814,
+ 1367.899369,
+ 1068.696278,
+ 926.9602964,
+ 7225.069258,
+ 1492.197043,
+ 3553.0224,
+ 825.682454,
+ 1034.298904,
+ 4332.720164,
+ 644.1707969,
+ 1210.884633,
+ 693.4207856
+ ]
+ },
+ {
+ "name":"Americas",
+ "text":[
+ "Argentina",
+ "Bolivia",
+ "Brazil",
+ "Canada",
+ "Chile",
+ "Colombia",
+ "Costa Rica",
+ "Cuba",
+ "Dominican Republic",
+ "Ecuador",
+ "El Salvador",
+ "Guatemala",
+ "Haiti",
+ "Honduras",
+ "Jamaica",
+ "Mexico",
+ "Nicaragua",
+ "Panama",
+ "Paraguay",
+ "Peru",
+ "Puerto Rico",
+ "Trinidad and Tobago",
+ "United States",
+ "Uruguay",
+ "Venezuela"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 33958947,
+ 6893451,
+ 155975974,
+ 28523502,
+ 13572994,
+ 34202721,
+ 3173216,
+ 10723260,
+ 7351181,
+ 10748394,
+ 5274649,
+ 8486949,
+ 6326682,
+ 5077347,
+ 2378618,
+ 88111030,
+ 4017939,
+ 2484997,
+ 4483945,
+ 22430449,
+ 3585176,
+ 1183669,
+ 256894189,
+ 3149262,
+ 20265563
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 71.868,
+ 59.957,
+ 67.057,
+ 77.95,
+ 74.126,
+ 68.421,
+ 75.713,
+ 74.414,
+ 68.457,
+ 69.613,
+ 66.798,
+ 63.373,
+ 55.089,
+ 66.399,
+ 71.766,
+ 71.455,
+ 65.843,
+ 72.462,
+ 68.225,
+ 66.458,
+ 73.911,
+ 69.862,
+ 76.09,
+ 72.752,
+ 71.15
+ ],
+ "y":[
+ 9308.41871,
+ 2961.699694,
+ 6950.283021,
+ 26342.88426,
+ 7596.125964,
+ 5444.648617,
+ 6160.416317,
+ 5592.843963,
+ 3044.214214,
+ 7103.702595,
+ 4444.2317,
+ 4439.45084,
+ 1456.309517,
+ 3081.694603,
+ 7404.923685,
+ 9472.384295,
+ 2170.151724,
+ 6618.74305,
+ 4196.411078,
+ 4446.380924,
+ 14641.58711,
+ 7370.990932,
+ 32003.93224,
+ 8137.004775,
+ 10733.92631
+ ]
+ },
+ {
+ "name":"Oceania",
+ "text":[
+ "Australia",
+ "New Zealand"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 17481977,
+ 3437674
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 77.56,
+ 76.33
+ ],
+ "y":[
+ 23424.76683,
+ 18363.32494
+ ]
+ }
+ ],
+ "name":"1992"
+ },
+ {
+ "data":[
+ {
+ "name":"Asia",
+ "text":[
+ "Afghanistan",
+ "Bahrain",
+ "Bangladesh",
+ "Cambodia",
+ "China",
+ "Hong Kong, China",
+ "India",
+ "Indonesia",
+ "Iran",
+ "Iraq",
+ "Israel",
+ "Japan",
+ "Jordan",
+ "Korea, Dem. Rep.",
+ "Korea, Rep.",
+ "Kuwait",
+ "Lebanon",
+ "Malaysia",
+ "Mongolia",
+ "Myanmar",
+ "Nepal",
+ "Oman",
+ "Pakistan",
+ "Philippines",
+ "Saudi Arabia",
+ "Singapore",
+ "Sri Lanka",
+ "Syria",
+ "Taiwan",
+ "Thailand",
+ "Vietnam",
+ "West Bank and Gaza",
+ "Yemen, Rep."
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 22227415,
+ 598561,
+ 123315288,
+ 11782962,
+ 1230075000,
+ 6495918,
+ 959000000,
+ 199278000,
+ 63327987,
+ 20775703,
+ 5531387,
+ 125956499,
+ 4526235,
+ 21585105,
+ 46173816,
+ 1765345,
+ 3430388,
+ 20476091,
+ 2494803,
+ 43247867,
+ 23001113,
+ 2283635,
+ 135564834,
+ 75012988,
+ 21229759,
+ 3802309,
+ 18698655,
+ 15081016,
+ 21628605,
+ 60216677,
+ 76048996,
+ 2826046,
+ 15826497
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 41.763,
+ 73.925,
+ 59.412,
+ 56.534,
+ 70.426,
+ 80,
+ 61.765,
+ 66.041,
+ 68.042,
+ 58.811,
+ 78.269,
+ 80.69,
+ 69.772,
+ 67.727,
+ 74.647,
+ 76.156,
+ 70.265,
+ 71.938,
+ 63.625,
+ 60.328,
+ 59.426,
+ 72.499,
+ 61.818,
+ 68.564,
+ 70.533,
+ 77.158,
+ 70.457,
+ 71.527,
+ 75.25,
+ 67.521,
+ 70.672,
+ 71.096,
+ 58.02
+ ],
+ "y":[
+ 635.341351,
+ 20292.01679,
+ 972.7700352,
+ 734.28517,
+ 2289.234136,
+ 28377.63219,
+ 1458.817442,
+ 3119.335603,
+ 8263.590301,
+ 3076.239795,
+ 20896.60924,
+ 28816.58499,
+ 3645.379572,
+ 1690.756814,
+ 15993.52796,
+ 40300.61996,
+ 8754.96385,
+ 10132.90964,
+ 1902.2521,
+ 415,
+ 1010.892138,
+ 19702.05581,
+ 2049.350521,
+ 2536.534925,
+ 20586.69019,
+ 33519.4766,
+ 2664.477257,
+ 4014.238972,
+ 20206.82098,
+ 5852.625497,
+ 1385.896769,
+ 7110.667619,
+ 2117.484526
+ ]
+ },
+ {
+ "name":"Europe",
+ "text":[
+ "Albania",
+ "Austria",
+ "Belgium",
+ "Bosnia and Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Czech Republic",
+ "Denmark",
+ "Finland",
+ "France",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Serbia",
+ "Slovak Republic",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "United Kingdom"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 3428038,
+ 8069876,
+ 10199787,
+ 3607000,
+ 8066057,
+ 4444595,
+ 10300707,
+ 5283663,
+ 5134406,
+ 58623428,
+ 82011073,
+ 10502372,
+ 10244684,
+ 271192,
+ 3667233,
+ 57479469,
+ 692651,
+ 15604464,
+ 4405672,
+ 38654957,
+ 10156415,
+ 22562458,
+ 10336594,
+ 5383010,
+ 2011612,
+ 39855442,
+ 8897619,
+ 7193761,
+ 63047647,
+ 58808266
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 72.95,
+ 77.51,
+ 77.53,
+ 73.244,
+ 70.32,
+ 73.68,
+ 74.01,
+ 76.11,
+ 77.13,
+ 78.64,
+ 77.34,
+ 77.869,
+ 71.04,
+ 78.95,
+ 76.122,
+ 78.82,
+ 75.445,
+ 78.03,
+ 78.32,
+ 72.75,
+ 75.97,
+ 69.72,
+ 72.232,
+ 72.71,
+ 75.13,
+ 78.77,
+ 79.39,
+ 79.37,
+ 68.835,
+ 77.218
+ ],
+ "y":[
+ 3193.054604,
+ 29095.92066,
+ 27561.19663,
+ 4766.355904,
+ 5970.38876,
+ 9875.604515,
+ 16048.51424,
+ 29804.34567,
+ 23723.9502,
+ 25889.78487,
+ 27788.88416,
+ 18747.69814,
+ 11712.7768,
+ 28061.09966,
+ 24521.94713,
+ 24675.02446,
+ 6465.613349,
+ 30246.13063,
+ 41283.16433,
+ 10159.58368,
+ 17641.03156,
+ 7346.547557,
+ 7914.320304,
+ 12126.23065,
+ 17161.10735,
+ 20445.29896,
+ 25266.59499,
+ 32135.32301,
+ 6601.429915,
+ 26074.53136
+ ]
+ },
+ {
+ "name":"Africa",
+ "text":[
+ "Algeria",
+ "Angola",
+ "Benin",
+ "Botswana",
+ "Burkina Faso",
+ "Burundi",
+ "Cameroon",
+ "Central African Republic",
+ "Chad",
+ "Comoros",
+ "Congo, Dem. Rep.",
+ "Congo, Rep.",
+ "Cote d'Ivoire",
+ "Djibouti",
+ "Egypt",
+ "Equatorial Guinea",
+ "Eritrea",
+ "Ethiopia",
+ "Gabon",
+ "Gambia",
+ "Ghana",
+ "Guinea",
+ "Guinea-Bissau",
+ "Kenya",
+ "Lesotho",
+ "Liberia",
+ "Libya",
+ "Madagascar",
+ "Malawi",
+ "Mali",
+ "Mauritania",
+ "Mauritius",
+ "Morocco",
+ "Mozambique",
+ "Namibia",
+ "Niger",
+ "Nigeria",
+ "Reunion",
+ "Rwanda",
+ "Sao Tome and Principe",
+ "Senegal",
+ "Sierra Leone",
+ "Somalia",
+ "South Africa",
+ "Sudan",
+ "Swaziland",
+ "Tanzania",
+ "Togo",
+ "Tunisia",
+ "Uganda",
+ "Zambia",
+ "Zimbabwe"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 29072015,
+ 9875024,
+ 6066080,
+ 1536536,
+ 10352843,
+ 6121610,
+ 14195809,
+ 3696513,
+ 7562011,
+ 527982,
+ 47798986,
+ 2800947,
+ 14625967,
+ 417908,
+ 66134291,
+ 439971,
+ 4058319,
+ 59861301,
+ 1126189,
+ 1235767,
+ 18418288,
+ 8048834,
+ 1193708,
+ 28263827,
+ 1982823,
+ 2200725,
+ 4759670,
+ 14165114,
+ 10419991,
+ 9384984,
+ 2444741,
+ 1149818,
+ 28529501,
+ 16603334,
+ 1774766,
+ 9666252,
+ 106207839,
+ 684810,
+ 7212583,
+ 145608,
+ 9535314,
+ 4578212,
+ 6633514,
+ 42835005,
+ 32160729,
+ 1054486,
+ 30686889,
+ 4320890,
+ 9231669,
+ 21210254,
+ 9417789,
+ 11404948
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 69.152,
+ 40.963,
+ 54.777,
+ 52.556,
+ 50.324,
+ 45.326,
+ 52.199,
+ 46.066,
+ 51.573,
+ 60.66,
+ 42.587,
+ 52.962,
+ 47.991,
+ 53.157,
+ 67.217,
+ 48.245,
+ 53.378,
+ 49.402,
+ 60.461,
+ 55.861,
+ 58.556,
+ 51.455,
+ 44.873,
+ 54.407,
+ 55.558,
+ 42.221,
+ 71.555,
+ 54.978,
+ 47.495,
+ 49.903,
+ 60.43,
+ 70.736,
+ 67.66,
+ 46.344,
+ 58.909,
+ 51.313,
+ 47.464,
+ 74.772,
+ 36.087,
+ 63.306,
+ 60.187,
+ 39.897,
+ 43.795,
+ 60.236,
+ 55.373,
+ 54.289,
+ 48.466,
+ 58.39,
+ 71.973,
+ 44.578,
+ 40.238,
+ 46.809
+ ],
+ "y":[
+ 4797.295051,
+ 2277.140884,
+ 1232.975292,
+ 8647.142313,
+ 946.2949618,
+ 463.1151478,
+ 1694.337469,
+ 740.5063317,
+ 1004.961353,
+ 1173.618235,
+ 312.188423,
+ 3484.164376,
+ 1786.265407,
+ 1895.016984,
+ 4173.181797,
+ 2814.480755,
+ 913.47079,
+ 515.8894013,
+ 14722.84188,
+ 653.7301704,
+ 1005.245812,
+ 869.4497668,
+ 796.6644681,
+ 1360.485021,
+ 1186.147994,
+ 609.1739508,
+ 9467.446056,
+ 986.2958956,
+ 692.2758103,
+ 790.2579846,
+ 1483.136136,
+ 7425.705295,
+ 2982.101858,
+ 472.3460771,
+ 3899.52426,
+ 580.3052092,
+ 1624.941275,
+ 6071.941411,
+ 589.9445051,
+ 1339.076036,
+ 1392.368347,
+ 574.6481576,
+ 930.5964284,
+ 7479.188244,
+ 1632.210764,
+ 3876.76846,
+ 789.1862231,
+ 982.2869243,
+ 4876.798614,
+ 816.559081,
+ 1071.353818,
+ 792.4499603
+ ]
+ },
+ {
+ "name":"Americas",
+ "text":[
+ "Argentina",
+ "Bolivia",
+ "Brazil",
+ "Canada",
+ "Chile",
+ "Colombia",
+ "Costa Rica",
+ "Cuba",
+ "Dominican Republic",
+ "Ecuador",
+ "El Salvador",
+ "Guatemala",
+ "Haiti",
+ "Honduras",
+ "Jamaica",
+ "Mexico",
+ "Nicaragua",
+ "Panama",
+ "Paraguay",
+ "Peru",
+ "Puerto Rico",
+ "Trinidad and Tobago",
+ "United States",
+ "Uruguay",
+ "Venezuela"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 36203463,
+ 7693188,
+ 168546719,
+ 30305843,
+ 14599929,
+ 37657830,
+ 3518107,
+ 10983007,
+ 7992357,
+ 11911819,
+ 5783439,
+ 9803875,
+ 6913545,
+ 5867957,
+ 2531311,
+ 95895146,
+ 4609572,
+ 2734531,
+ 5154123,
+ 24748122,
+ 3759430,
+ 1138101,
+ 272911760,
+ 3262838,
+ 22374398
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 73.275,
+ 62.05,
+ 69.388,
+ 78.61,
+ 75.816,
+ 70.313,
+ 77.26,
+ 76.151,
+ 69.957,
+ 72.312,
+ 69.535,
+ 66.322,
+ 56.671,
+ 67.659,
+ 72.262,
+ 73.67,
+ 68.426,
+ 73.738,
+ 69.4,
+ 68.386,
+ 74.917,
+ 69.465,
+ 76.81,
+ 74.223,
+ 72.146
+ ],
+ "y":[
+ 10967.28195,
+ 3326.143191,
+ 7957.980824,
+ 28954.92589,
+ 10118.05318,
+ 6117.361746,
+ 6677.045314,
+ 5431.990415,
+ 3614.101285,
+ 7429.455877,
+ 5154.825496,
+ 4684.313807,
+ 1341.726931,
+ 3160.454906,
+ 7121.924704,
+ 9767.29753,
+ 2253.023004,
+ 7113.692252,
+ 4247.400261,
+ 5838.347657,
+ 16999.4333,
+ 8792.573126,
+ 35767.43303,
+ 9230.240708,
+ 10165.49518
+ ]
+ },
+ {
+ "name":"Oceania",
+ "text":[
+ "Australia",
+ "New Zealand"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 18565243,
+ 3676187
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 78.83,
+ 77.55
+ ],
+ "y":[
+ 26997.93657,
+ 21050.41377
+ ]
+ }
+ ],
+ "name":"1997"
+ },
+ {
+ "data":[
+ {
+ "name":"Asia",
+ "text":[
+ "Afghanistan",
+ "Bahrain",
+ "Bangladesh",
+ "Cambodia",
+ "China",
+ "Hong Kong, China",
+ "India",
+ "Indonesia",
+ "Iran",
+ "Iraq",
+ "Israel",
+ "Japan",
+ "Jordan",
+ "Korea, Dem. Rep.",
+ "Korea, Rep.",
+ "Kuwait",
+ "Lebanon",
+ "Malaysia",
+ "Mongolia",
+ "Myanmar",
+ "Nepal",
+ "Oman",
+ "Pakistan",
+ "Philippines",
+ "Saudi Arabia",
+ "Singapore",
+ "Sri Lanka",
+ "Syria",
+ "Taiwan",
+ "Thailand",
+ "Vietnam",
+ "West Bank and Gaza",
+ "Yemen, Rep."
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 25268405,
+ 656397,
+ 135656790,
+ 12926707,
+ 1280400000,
+ 6762476,
+ 1034172547,
+ 211060000,
+ 66907826,
+ 24001816,
+ 6029529,
+ 127065841,
+ 5307470,
+ 22215365,
+ 47969150,
+ 2111561,
+ 3677780,
+ 22662365,
+ 2674234,
+ 45598081,
+ 25873917,
+ 2713462,
+ 153403524,
+ 82995088,
+ 24501530,
+ 4197776,
+ 19576783,
+ 17155814,
+ 22454239,
+ 62806748,
+ 80908147,
+ 3389578,
+ 18701257
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 42.129,
+ 74.795,
+ 62.013,
+ 56.752,
+ 72.028,
+ 81.495,
+ 62.879,
+ 68.588,
+ 69.451,
+ 57.046,
+ 79.696,
+ 82,
+ 71.263,
+ 66.662,
+ 77.045,
+ 76.904,
+ 71.028,
+ 73.044,
+ 65.033,
+ 59.908,
+ 61.34,
+ 74.193,
+ 63.61,
+ 70.303,
+ 71.626,
+ 78.77,
+ 70.815,
+ 73.053,
+ 76.99,
+ 68.564,
+ 73.017,
+ 72.37,
+ 60.308
+ ],
+ "y":[
+ 726.7340548,
+ 23403.55927,
+ 1136.39043,
+ 896.2260153,
+ 3119.280896,
+ 30209.01516,
+ 1746.769454,
+ 2873.91287,
+ 9240.761975,
+ 4390.717312,
+ 21905.59514,
+ 28604.5919,
+ 3844.917194,
+ 1646.758151,
+ 19233.98818,
+ 35110.10566,
+ 9313.93883,
+ 10206.97794,
+ 2140.739323,
+ 611,
+ 1057.206311,
+ 19774.83687,
+ 2092.712441,
+ 2650.921068,
+ 19014.54118,
+ 36023.1054,
+ 3015.378833,
+ 4090.925331,
+ 23235.42329,
+ 5913.187529,
+ 1764.456677,
+ 4515.487575,
+ 2234.820827
+ ]
+ },
+ {
+ "name":"Europe",
+ "text":[
+ "Albania",
+ "Austria",
+ "Belgium",
+ "Bosnia and Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Czech Republic",
+ "Denmark",
+ "Finland",
+ "France",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Serbia",
+ "Slovak Republic",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "United Kingdom"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 3508512,
+ 8148312,
+ 10311970,
+ 4165416,
+ 7661799,
+ 4481020,
+ 10256295,
+ 5374693,
+ 5193039,
+ 59925035,
+ 82350671,
+ 10603863,
+ 10083313,
+ 288030,
+ 3879155,
+ 57926999,
+ 720230,
+ 16122830,
+ 4535591,
+ 38625976,
+ 10433867,
+ 22404337,
+ 10111559,
+ 5410052,
+ 2011497,
+ 40152517,
+ 8954175,
+ 7361757,
+ 67308928,
+ 59912431
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 75.651,
+ 78.98,
+ 78.32,
+ 74.09,
+ 72.14,
+ 74.876,
+ 75.51,
+ 77.18,
+ 78.37,
+ 79.59,
+ 78.67,
+ 78.256,
+ 72.59,
+ 80.5,
+ 77.783,
+ 80.24,
+ 73.981,
+ 78.53,
+ 79.05,
+ 74.67,
+ 77.29,
+ 71.322,
+ 73.213,
+ 73.8,
+ 76.66,
+ 79.78,
+ 80.04,
+ 80.62,
+ 70.845,
+ 78.471
+ ],
+ "y":[
+ 4604.211737,
+ 32417.60769,
+ 30485.88375,
+ 6018.975239,
+ 7696.777725,
+ 11628.38895,
+ 17596.21022,
+ 32166.50006,
+ 28204.59057,
+ 28926.03234,
+ 30035.80198,
+ 22514.2548,
+ 14843.93556,
+ 31163.20196,
+ 34077.04939,
+ 27968.09817,
+ 6557.194282,
+ 33724.75778,
+ 44683.97525,
+ 12002.23908,
+ 19970.90787,
+ 7885.360081,
+ 7236.075251,
+ 13638.77837,
+ 20660.01936,
+ 24835.47166,
+ 29341.63093,
+ 34480.95771,
+ 6508.085718,
+ 29478.99919
+ ]
+ },
+ {
+ "name":"Africa",
+ "text":[
+ "Algeria",
+ "Angola",
+ "Benin",
+ "Botswana",
+ "Burkina Faso",
+ "Burundi",
+ "Cameroon",
+ "Central African Republic",
+ "Chad",
+ "Comoros",
+ "Congo, Dem. Rep.",
+ "Congo, Rep.",
+ "Cote d'Ivoire",
+ "Djibouti",
+ "Egypt",
+ "Equatorial Guinea",
+ "Eritrea",
+ "Ethiopia",
+ "Gabon",
+ "Gambia",
+ "Ghana",
+ "Guinea",
+ "Guinea-Bissau",
+ "Kenya",
+ "Lesotho",
+ "Liberia",
+ "Libya",
+ "Madagascar",
+ "Malawi",
+ "Mali",
+ "Mauritania",
+ "Mauritius",
+ "Morocco",
+ "Mozambique",
+ "Namibia",
+ "Niger",
+ "Nigeria",
+ "Reunion",
+ "Rwanda",
+ "Sao Tome and Principe",
+ "Senegal",
+ "Sierra Leone",
+ "Somalia",
+ "South Africa",
+ "Sudan",
+ "Swaziland",
+ "Tanzania",
+ "Togo",
+ "Tunisia",
+ "Uganda",
+ "Zambia",
+ "Zimbabwe"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 31287142,
+ 10866106,
+ 7026113,
+ 1630347,
+ 12251209,
+ 7021078,
+ 15929988,
+ 4048013,
+ 8835739,
+ 614382,
+ 55379852,
+ 3328795,
+ 16252726,
+ 447416,
+ 73312559,
+ 495627,
+ 4414865,
+ 67946797,
+ 1299304,
+ 1457766,
+ 20550751,
+ 8807818,
+ 1332459,
+ 31386842,
+ 2046772,
+ 2814651,
+ 5368585,
+ 16473477,
+ 11824495,
+ 10580176,
+ 2828858,
+ 1200206,
+ 31167783,
+ 18473780,
+ 1972153,
+ 11140655,
+ 119901274,
+ 743981,
+ 7852401,
+ 170372,
+ 10870037,
+ 5359092,
+ 7753310,
+ 44433622,
+ 37090298,
+ 1130269,
+ 34593779,
+ 4977378,
+ 9770575,
+ 24739869,
+ 10595811,
+ 11926563
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 70.994,
+ 41.003,
+ 54.406,
+ 46.634,
+ 50.65,
+ 47.36,
+ 49.856,
+ 43.308,
+ 50.525,
+ 62.974,
+ 44.966,
+ 52.97,
+ 46.832,
+ 53.373,
+ 69.806,
+ 49.348,
+ 55.24,
+ 50.725,
+ 56.761,
+ 58.041,
+ 58.453,
+ 53.676,
+ 45.504,
+ 50.992,
+ 44.593,
+ 43.753,
+ 72.737,
+ 57.286,
+ 45.009,
+ 51.818,
+ 62.247,
+ 71.954,
+ 69.615,
+ 44.026,
+ 51.479,
+ 54.496,
+ 46.608,
+ 75.744,
+ 43.413,
+ 64.337,
+ 61.6,
+ 41.012,
+ 45.936,
+ 53.365,
+ 56.369,
+ 43.869,
+ 49.651,
+ 57.561,
+ 73.042,
+ 47.813,
+ 39.193,
+ 39.989
+ ],
+ "y":[
+ 5288.040382,
+ 2773.287312,
+ 1372.877931,
+ 11003.60508,
+ 1037.645221,
+ 446.4035126,
+ 1934.011449,
+ 738.6906068,
+ 1156.18186,
+ 1075.811558,
+ 241.1658765,
+ 3484.06197,
+ 1648.800823,
+ 1908.260867,
+ 4754.604414,
+ 7703.4959,
+ 765.3500015,
+ 530.0535319,
+ 12521.71392,
+ 660.5855997,
+ 1111.984578,
+ 945.5835837,
+ 575.7047176,
+ 1287.514732,
+ 1275.184575,
+ 531.4823679,
+ 9534.677467,
+ 894.6370822,
+ 665.4231186,
+ 951.4097518,
+ 1579.019543,
+ 9021.815894,
+ 3258.495584,
+ 633.6179466,
+ 4072.324751,
+ 601.0745012,
+ 1615.286395,
+ 6316.1652,
+ 785.6537648,
+ 1353.09239,
+ 1519.635262,
+ 699.489713,
+ 882.0818218,
+ 7710.946444,
+ 1993.398314,
+ 4128.116943,
+ 899.0742111,
+ 886.2205765,
+ 5722.895655,
+ 927.7210018,
+ 1071.613938,
+ 672.0386227
+ ]
+ },
+ {
+ "name":"Americas",
+ "text":[
+ "Argentina",
+ "Bolivia",
+ "Brazil",
+ "Canada",
+ "Chile",
+ "Colombia",
+ "Costa Rica",
+ "Cuba",
+ "Dominican Republic",
+ "Ecuador",
+ "El Salvador",
+ "Guatemala",
+ "Haiti",
+ "Honduras",
+ "Jamaica",
+ "Mexico",
+ "Nicaragua",
+ "Panama",
+ "Paraguay",
+ "Peru",
+ "Puerto Rico",
+ "Trinidad and Tobago",
+ "United States",
+ "Uruguay",
+ "Venezuela"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 38331121,
+ 8445134,
+ 179914212,
+ 31902268,
+ 15497046,
+ 41008227,
+ 3834934,
+ 11226999,
+ 8650322,
+ 12921234,
+ 6353681,
+ 11178650,
+ 7607651,
+ 6677328,
+ 2664659,
+ 102479927,
+ 5146848,
+ 2990875,
+ 5884491,
+ 26769436,
+ 3859606,
+ 1101832,
+ 287675526,
+ 3363085,
+ 24287670
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 74.34,
+ 63.883,
+ 71.006,
+ 79.77,
+ 77.86,
+ 71.682,
+ 78.123,
+ 77.158,
+ 70.847,
+ 74.173,
+ 70.734,
+ 68.978,
+ 58.137,
+ 68.565,
+ 72.047,
+ 74.902,
+ 70.836,
+ 74.712,
+ 70.755,
+ 69.906,
+ 77.778,
+ 68.976,
+ 77.31,
+ 75.307,
+ 72.766
+ ],
+ "y":[
+ 8797.640716,
+ 3413.26269,
+ 8131.212843,
+ 33328.96507,
+ 10778.78385,
+ 5755.259962,
+ 7723.447195,
+ 6340.646683,
+ 4563.808154,
+ 5773.044512,
+ 5351.568666,
+ 4858.347495,
+ 1270.364932,
+ 3099.72866,
+ 6994.774861,
+ 10742.44053,
+ 2474.548819,
+ 7356.031934,
+ 3783.674243,
+ 5909.020073,
+ 18855.60618,
+ 11460.60023,
+ 39097.09955,
+ 7727.002004,
+ 8605.047831
+ ]
+ },
+ {
+ "name":"Oceania",
+ "text":[
+ "Australia",
+ "New Zealand"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 19546792,
+ 3908037
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 80.37,
+ 79.11
+ ],
+ "y":[
+ 30687.75473,
+ 23189.80135
+ ]
+ }
+ ],
+ "name":"2002"
+ },
+ {
+ "data":[
+ {
+ "name":"Asia",
+ "text":[
+ "Afghanistan",
+ "Bahrain",
+ "Bangladesh",
+ "Cambodia",
+ "China",
+ "Hong Kong, China",
+ "India",
+ "Indonesia",
+ "Iran",
+ "Iraq",
+ "Israel",
+ "Japan",
+ "Jordan",
+ "Korea, Dem. Rep.",
+ "Korea, Rep.",
+ "Kuwait",
+ "Lebanon",
+ "Malaysia",
+ "Mongolia",
+ "Myanmar",
+ "Nepal",
+ "Oman",
+ "Pakistan",
+ "Philippines",
+ "Saudi Arabia",
+ "Singapore",
+ "Sri Lanka",
+ "Syria",
+ "Taiwan",
+ "Thailand",
+ "Vietnam",
+ "West Bank and Gaza",
+ "Yemen, Rep."
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 31889923,
+ 708573,
+ 150448339,
+ 14131858,
+ 1318683096,
+ 6980412,
+ 1110396331,
+ 223547000,
+ 69453570,
+ 27499638,
+ 6426679,
+ 127467972,
+ 6053193,
+ 23301725,
+ 49044790,
+ 2505559,
+ 3921278,
+ 24821286,
+ 2874127,
+ 47761980,
+ 28901790,
+ 3204897,
+ 169270617,
+ 91077287,
+ 27601038,
+ 4553009,
+ 20378239,
+ 19314747,
+ 23174294,
+ 65068149,
+ 85262356,
+ 4018332,
+ 22211743
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 43.828,
+ 75.635,
+ 64.062,
+ 59.723,
+ 72.961,
+ 82.208,
+ 64.698,
+ 70.65,
+ 70.964,
+ 59.545,
+ 80.745,
+ 82.603,
+ 72.535,
+ 67.297,
+ 78.623,
+ 77.588,
+ 71.993,
+ 74.241,
+ 66.803,
+ 62.069,
+ 63.785,
+ 75.64,
+ 65.483,
+ 71.688,
+ 72.777,
+ 79.972,
+ 72.396,
+ 74.143,
+ 78.4,
+ 70.616,
+ 74.249,
+ 73.422,
+ 62.698
+ ],
+ "y":[
+ 974.5803384,
+ 29796.04834,
+ 1391.253792,
+ 1713.778686,
+ 4959.114854,
+ 39724.97867,
+ 2452.210407,
+ 3540.651564,
+ 11605.71449,
+ 4471.061906,
+ 25523.2771,
+ 31656.06806,
+ 4519.461171,
+ 1593.06548,
+ 23348.13973,
+ 47306.98978,
+ 10461.05868,
+ 12451.6558,
+ 3095.772271,
+ 944,
+ 1091.359778,
+ 22316.19287,
+ 2605.94758,
+ 3190.481016,
+ 21654.83194,
+ 47143.17964,
+ 3970.095407,
+ 4184.548089,
+ 28718.27684,
+ 7458.396327,
+ 2441.576404,
+ 3025.349798,
+ 2280.769906
+ ]
+ },
+ {
+ "name":"Europe",
+ "text":[
+ "Albania",
+ "Austria",
+ "Belgium",
+ "Bosnia and Herzegovina",
+ "Bulgaria",
+ "Croatia",
+ "Czech Republic",
+ "Denmark",
+ "Finland",
+ "France",
+ "Germany",
+ "Greece",
+ "Hungary",
+ "Iceland",
+ "Ireland",
+ "Italy",
+ "Montenegro",
+ "Netherlands",
+ "Norway",
+ "Poland",
+ "Portugal",
+ "Romania",
+ "Serbia",
+ "Slovak Republic",
+ "Slovenia",
+ "Spain",
+ "Sweden",
+ "Switzerland",
+ "Turkey",
+ "United Kingdom"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 3600523,
+ 8199783,
+ 10392226,
+ 4552198,
+ 7322858,
+ 4493312,
+ 10228744,
+ 5468120,
+ 5238460,
+ 61083916,
+ 82400996,
+ 10706290,
+ 9956108,
+ 301931,
+ 4109086,
+ 58147733,
+ 684736,
+ 16570613,
+ 4627926,
+ 38518241,
+ 10642836,
+ 22276056,
+ 10150265,
+ 5447502,
+ 2009245,
+ 40448191,
+ 9031088,
+ 7554661,
+ 71158647,
+ 60776238
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 76.423,
+ 79.829,
+ 79.441,
+ 74.852,
+ 73.005,
+ 75.748,
+ 76.486,
+ 78.332,
+ 79.313,
+ 80.657,
+ 79.406,
+ 79.483,
+ 73.338,
+ 81.757,
+ 78.885,
+ 80.546,
+ 74.543,
+ 79.762,
+ 80.196,
+ 75.563,
+ 78.098,
+ 72.476,
+ 74.002,
+ 74.663,
+ 77.926,
+ 80.941,
+ 80.884,
+ 81.701,
+ 71.777,
+ 79.425
+ ],
+ "y":[
+ 5937.029526,
+ 36126.4927,
+ 33692.60508,
+ 7446.298803,
+ 10680.79282,
+ 14619.22272,
+ 22833.30851,
+ 35278.41874,
+ 33207.0844,
+ 30470.0167,
+ 32170.37442,
+ 27538.41188,
+ 18008.94444,
+ 36180.78919,
+ 40675.99635,
+ 28569.7197,
+ 9253.896111,
+ 36797.93332,
+ 49357.19017,
+ 15389.92468,
+ 20509.64777,
+ 10808.47561,
+ 9786.534714,
+ 18678.31435,
+ 25768.25759,
+ 28821.0637,
+ 33859.74835,
+ 37506.41907,
+ 8458.276384,
+ 33203.26128
+ ]
+ },
+ {
+ "name":"Africa",
+ "text":[
+ "Algeria",
+ "Angola",
+ "Benin",
+ "Botswana",
+ "Burkina Faso",
+ "Burundi",
+ "Cameroon",
+ "Central African Republic",
+ "Chad",
+ "Comoros",
+ "Congo, Dem. Rep.",
+ "Congo, Rep.",
+ "Cote d'Ivoire",
+ "Djibouti",
+ "Egypt",
+ "Equatorial Guinea",
+ "Eritrea",
+ "Ethiopia",
+ "Gabon",
+ "Gambia",
+ "Ghana",
+ "Guinea",
+ "Guinea-Bissau",
+ "Kenya",
+ "Lesotho",
+ "Liberia",
+ "Libya",
+ "Madagascar",
+ "Malawi",
+ "Mali",
+ "Mauritania",
+ "Mauritius",
+ "Morocco",
+ "Mozambique",
+ "Namibia",
+ "Niger",
+ "Nigeria",
+ "Reunion",
+ "Rwanda",
+ "Sao Tome and Principe",
+ "Senegal",
+ "Sierra Leone",
+ "Somalia",
+ "South Africa",
+ "Sudan",
+ "Swaziland",
+ "Tanzania",
+ "Togo",
+ "Tunisia",
+ "Uganda",
+ "Zambia",
+ "Zimbabwe"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 33333216,
+ 12420476,
+ 8078314,
+ 1639131,
+ 14326203,
+ 8390505,
+ 17696293,
+ 4369038,
+ 10238807,
+ 710960,
+ 64606759,
+ 3800610,
+ 18013409,
+ 496374,
+ 80264543,
+ 551201,
+ 4906585,
+ 76511887,
+ 1454867,
+ 1688359,
+ 22873338,
+ 9947814,
+ 1472041,
+ 35610177,
+ 2012649,
+ 3193942,
+ 6036914,
+ 19167654,
+ 13327079,
+ 12031795,
+ 3270065,
+ 1250882,
+ 33757175,
+ 19951656,
+ 2055080,
+ 12894865,
+ 135031164,
+ 798094,
+ 8860588,
+ 199579,
+ 12267493,
+ 6144562,
+ 9118773,
+ 43997828,
+ 42292929,
+ 1133066,
+ 38139640,
+ 5701579,
+ 10276158,
+ 29170398,
+ 11746035,
+ 12311143
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 72.301,
+ 42.731,
+ 56.728,
+ 50.728,
+ 52.295,
+ 49.58,
+ 50.43,
+ 44.741,
+ 50.651,
+ 65.152,
+ 46.462,
+ 55.322,
+ 48.328,
+ 54.791,
+ 71.338,
+ 51.579,
+ 58.04,
+ 52.947,
+ 56.735,
+ 59.448,
+ 60.022,
+ 56.007,
+ 46.388,
+ 54.11,
+ 42.592,
+ 45.678,
+ 73.952,
+ 59.443,
+ 48.303,
+ 54.467,
+ 64.164,
+ 72.801,
+ 71.164,
+ 42.082,
+ 52.906,
+ 56.867,
+ 46.859,
+ 76.442,
+ 46.242,
+ 65.528,
+ 63.062,
+ 42.568,
+ 48.159,
+ 49.339,
+ 58.556,
+ 39.613,
+ 52.517,
+ 58.42,
+ 73.923,
+ 51.542,
+ 42.384,
+ 43.487
+ ],
+ "y":[
+ 6223.367465,
+ 4797.231267,
+ 1441.284873,
+ 12569.85177,
+ 1217.032994,
+ 430.0706916,
+ 2042.09524,
+ 706.016537,
+ 1704.063724,
+ 986.1478792,
+ 277.5518587,
+ 3632.557798,
+ 1544.750112,
+ 2082.481567,
+ 5581.180998,
+ 12154.08975,
+ 641.3695236,
+ 690.8055759,
+ 13206.48452,
+ 752.7497265,
+ 1327.60891,
+ 942.6542111,
+ 579.231743,
+ 1463.249282,
+ 1569.331442,
+ 414.5073415,
+ 12057.49928,
+ 1044.770126,
+ 759.3499101,
+ 1042.581557,
+ 1803.151496,
+ 10956.99112,
+ 3820.17523,
+ 823.6856205,
+ 4811.060429,
+ 619.6768924,
+ 2013.977305,
+ 7670.122558,
+ 863.0884639,
+ 1598.435089,
+ 1712.472136,
+ 862.5407561,
+ 926.1410683,
+ 9269.657808,
+ 2602.394995,
+ 4513.480643,
+ 1107.482182,
+ 882.9699438,
+ 7092.923025,
+ 1056.380121,
+ 1271.211593,
+ 469.7092981
+ ]
+ },
+ {
+ "name":"Americas",
+ "text":[
+ "Argentina",
+ "Bolivia",
+ "Brazil",
+ "Canada",
+ "Chile",
+ "Colombia",
+ "Costa Rica",
+ "Cuba",
+ "Dominican Republic",
+ "Ecuador",
+ "El Salvador",
+ "Guatemala",
+ "Haiti",
+ "Honduras",
+ "Jamaica",
+ "Mexico",
+ "Nicaragua",
+ "Panama",
+ "Paraguay",
+ "Peru",
+ "Puerto Rico",
+ "Trinidad and Tobago",
+ "United States",
+ "Uruguay",
+ "Venezuela"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 40301927,
+ 9119152,
+ 190010647,
+ 33390141,
+ 16284741,
+ 44227550,
+ 4133884,
+ 11416987,
+ 9319622,
+ 13755680,
+ 6939688,
+ 12572928,
+ 8502814,
+ 7483763,
+ 2780132,
+ 108700891,
+ 5675356,
+ 3242173,
+ 6667147,
+ 28674757,
+ 3942491,
+ 1056608,
+ 301139947,
+ 3447496,
+ 26084662
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 75.32,
+ 65.554,
+ 72.39,
+ 80.653,
+ 78.553,
+ 72.889,
+ 78.782,
+ 78.273,
+ 72.235,
+ 74.994,
+ 71.878,
+ 70.259,
+ 60.916,
+ 70.198,
+ 72.567,
+ 76.195,
+ 72.899,
+ 75.537,
+ 71.752,
+ 71.421,
+ 78.746,
+ 69.819,
+ 78.242,
+ 76.384,
+ 73.747
+ ],
+ "y":[
+ 12779.37964,
+ 3822.137084,
+ 9065.800825,
+ 36319.23501,
+ 13171.63885,
+ 7006.580419,
+ 9645.06142,
+ 8948.102923,
+ 6025.374752,
+ 6873.262326,
+ 5728.353514,
+ 5186.050003,
+ 1201.637154,
+ 3548.330846,
+ 7320.880262,
+ 11977.57496,
+ 2749.320965,
+ 9809.185636,
+ 4172.838464,
+ 7408.905561,
+ 19328.70901,
+ 18008.50924,
+ 42951.65309,
+ 10611.46299,
+ 11415.80569
+ ]
+ },
+ {
+ "name":"Oceania",
+ "text":[
+ "Australia",
+ "New Zealand"
+ ],
+ "marker":{
+ "sizemode":"area",
+ "sizeref":200000,
+ "size":[
+ 20434176,
+ 4115771
+ ]
+ },
+ "mode":"markers",
+ "x":[
+ 81.235,
+ 80.204
+ ],
+ "y":[
+ 34435.36744,
+ 25185.00911
+ ]
+ }
+ ],
+ "name":"2007"
+ }
+ ],
+ "layout":{
+ "xaxis":{
+ "title":"Life Expectancy",
+ "range":[
+ 30,
+ 85
+ ]
+ },
+ "yaxis":{
+ "title":"GDP per Capita",
+ "type":"log"
+ },
+ "hovermode":"closest",
+ "slider":{
+ "visible":true,
+ "plotlycommand":"animate",
+ "args":[
+ "slider.value",
+ {
+ "duration":400,
+ "ease":"cubic-in-out"
+ }
+ ],
+ "initialValue":"1952",
+ "values":[
+ "1952",
+ "1957",
+ "1962",
+ "1967",
+ "1972",
+ "1977",
+ "1982",
+ "1987",
+ "1992",
+ "1997",
+ "2002",
+ "2007"
+ ]
+ },
+ "updatemenus": [{
+ "x": 0.1,
+ "y": 0,
+ "yanchor": "top",
+ "xanchor": "right",
+ "showactive": false,
+ "direction": "left",
+ "type": "buttons",
+ "pad": {"t": 87, "r": 10},
+ "buttons": [{
+ "method": "animate",
+ "args": [null, {
+ "fromcurrent": true,
+ "transition": {
+ "duration": 300,
+ "easing": "quadratic-in-out"
+ },
+ "frame": {
+ "duration": 500,
+ "redraw": false
+ }
+ }],
+ "label": "Play"
+ }, {
+ "method": "animate",
+ "args": [
+ [null],
+ {
+ "mode": "immediate",
+ "transition": {
+ "duration": 0
+ },
+ "frame": {
+ "duration": 0,
+ "redraw": false
+ }
+ }
+ ],
+ "label": "Pause"
+ }]
+ }],
+ "sliders": [{
+ "active": 0,
+ "steps": [{
+ "label": "1952",
+ "method": "animate",
+ "args": [["1952"], {
+ "mode": "immediate",
+ "transition": {"duration": 300},
+ "frame": {"duration": 300, "redraw": false}
+ }
+ ]
+ }, {
+ "label": "1957",
+ "method": "animate",
+ "args": [["1957"], {
+ "mode": "immediate",
+ "transition": {"duration": 300},
+ "frame": {"duration": 300, "redraw": false}
+ }
+ ]
+ }, {
+ "label": "1962",
+ "method": "animate",
+ "args": [["1962"], {
+ "mode": "immediate",
+ "transition": {"duration": 300},
+ "frame": {"duration": 300, "redraw": false}
+ }
+ ]
+ }, {
+ "label": "1967",
+ "method": "animate",
+ "args": [["1967"], {
+ "mode": "immediate",
+ "transition": {"duration": 300},
+ "frame": {"duration": 300, "redraw": false}
+ }
+ ]
+ }, {
+ "label": "1972",
+ "method": "animate",
+ "args": [["1972"], {
+ "mode": "immediate",
+ "transition": {"duration": 300},
+ "frame": {"duration": 300, "redraw": false}
+ }
+ ]
+ }, {
+ "label": "1977",
+ "method": "animate",
+ "args": [["1977"], {
+ "mode": "immediate",
+ "transition": {"duration": 300},
+ "frame": {"duration": 300, "redraw": false}
+ }
+ ]
+ }, {
+ "label": "1982",
+ "method": "animate",
+ "args": [["1982"], {
+ "mode": "immediate",
+ "transition": {"duration": 300},
+ "frame": {"duration": 300, "redraw": false}
+ }
+ ]
+ }, {
+ "label": "1987",
+ "method": "animate",
+ "args": [["1987"], {
+ "mode": "immediate",
+ "transition": {"duration": 300},
+ "frame": {"duration": 300, "redraw": false}
+ }
+ ]
+ }, {
+ "label": "1992",
+ "method": "animate",
+ "args": [["1992"], {
+ "mode": "immediate",
+ "transition": {"duration": 300},
+ "frame": {"duration": 300, "redraw": false}
+ }
+ ]
+ }, {
+ "label": "1997",
+ "method": "animate",
+ "args": [["1997"], {
+ "mode": "immediate",
+ "transition": {"duration": 300},
+ "frame": {"duration": 300, "redraw": false}
+ }
+ ]
+ }, {
+ "label": "2002",
+ "method": "animate",
+ "args": [["2002"], {
+ "mode": "immediate",
+ "transition": {"duration": 300},
+ "frame": {"duration": 300, "redraw": false}
+ }
+ ]
+ }, {
+ "label": "2007",
+ "method": "animate",
+ "args": [["2007"], {
+ "mode": "immediate",
+ "transition": {"duration": 300},
+ "frame": {"duration": 300, "redraw": false}
+ }
+ ]
+ }],
+ "x": 0.1,
+ "len": 0.9,
+ "xanchor": "left",
+ "y": 0,
+ "yanchor": "top",
+ "pad": {"t": 50, "b": 10},
+ "currentvalue": {
+ "visible": true,
+ "prefix": "Year:",
+ "xanchor": "right",
+ "font": {
+ "size": 20,
+ "color": "#666"
+ }
+ },
+ "transition": {
+ "duration": 300,
+ "easing": "cubic-in-out"
+ }
+ }]
+ },
+ "config": {
+ "scrollzoom": true
+ }
+}
diff --git a/docs/content/plotly_js/animations/animations_plotly_js_index.html b/docs/content/plotly_js/animations/animations_plotly_js_index.html
new file mode 100644
index 00000000000..77c1ea97b60
--- /dev/null
+++ b/docs/content/plotly_js/animations/animations_plotly_js_index.html
@@ -0,0 +1,13 @@
+---
+name: Animations
+permalink: javascript/animations/
+description: How to animate charts in JavaScript with the animate API.
+layout: base
+thumbnail: thumbnail/animations.gif
+language: plotly_js
+page_type: example_index
+display_as: animations
+order: 1
+---
+{% assign examples = site.posts | where:"language","plotly_js" | where:"suite","animations" | sort: "order" %}
+{% include posts/auto_examples.html examples=examples %}
diff --git a/docs/content/plotly_js/animations/filled-area-animations/filled-area-animations.html b/docs/content/plotly_js/animations/filled-area-animations/filled-area-animations.html
new file mode 100644
index 00000000000..7b085e4b219
--- /dev/null
+++ b/docs/content/plotly_js/animations/filled-area-animations/filled-area-animations.html
@@ -0,0 +1,96 @@
+---
+name: Filled-Area-Animation
+plot_url: https://codepen.io/bcd/embed/ayVXvY/?height=500&theme-id=15263&default-tab=result
+language: plotly_js
+suite: filled-area-animations
+order: 1
+sitemap: false
+arrangement: horizontal
+---
+
+d3.csv("https://raw.githubusercontent.com/plotly/datasets/master/2014_apple_stock.csv", function(err, rows){
+
+ function unpack(rows, key) {
+ return rows.map(function(row) { return row[key]; });
+}
+
+ var frames = []
+ var x = unpack(rows, 'AAPL_x')
+ var y = unpack(rows, 'AAPL_y')
+
+ var n = 100;
+ for (var i = 0; i < n; i++) {
+ frames[i] = {data: [{x: [], y: []}]}
+ frames[i].data[0].x = x.slice(0, i+1);
+ frames[i].data[0].y = y.slice(0, i+1);
+ }
+
+ Plotly.newPlot('myDiv', [{
+ x: frames[1].data[0].x,
+ y: frames[1].data[0].y,
+ fill: 'tozeroy',
+ type: 'scatter',
+ mode: 'lines',
+ line: {color: 'green'}
+ }], {
+ title: {
+ text: "Filled-Area Animation"
+ },
+ xaxis: {
+ type: 'date',
+ range: [
+ frames[99].data[0].x[0],
+ frames[99].data[0].x[99]
+ ]
+ },
+ yaxis: {
+ range: [
+ 0,
+ 90
+ ]
+ },
+ updatemenus: [{
+ x: 0.1,
+ y: 0,
+ yanchor: "top",
+ xanchor: "right",
+ showactive: false,
+ direction: "left",
+ type: "buttons",
+ pad: {"t": 87, "r": 10},
+ buttons: [{
+ method: "animate",
+ args: [null, {
+ fromcurrent: true,
+ transition: {
+ duration: 0,
+ },
+ frame: {
+ duration: 40,
+ redraw: false
+ }
+ }],
+ label: "Play"
+ }, {
+ method: "animate",
+ args: [
+ [null],
+ {
+ mode: "immediate",
+ transition: {
+ duration: 0
+ },
+ frame: {
+ duration: 0,
+ redraw: false
+ }
+ }
+ ],
+ label: "Pause"
+ }]
+ }]
+ }).then(function() {
+ Plotly.addFrames('myDiv', frames);
+ });
+
+})
diff --git a/docs/content/plotly_js/animations/filled-area-animations/multiple-filled-area-animations.html b/docs/content/plotly_js/animations/filled-area-animations/multiple-filled-area-animations.html
new file mode 100644
index 00000000000..848164df064
--- /dev/null
+++ b/docs/content/plotly_js/animations/filled-area-animations/multiple-filled-area-animations.html
@@ -0,0 +1,116 @@
+---
+name: Multiple Trace Filled-Area
+plot_url: https://codepen.io/bcd/embed/BdJXpP/?height=500&theme-id=15263&default-tab=result
+language: plotly_js
+suite: filled-area-animations
+order: 2
+sitemap: false
+arrangement: horizontal
+---
+
+d3.csv("https://raw.githubusercontent.com/plotly/datasets/master/finance-charts-apple.csv", function(err, rows){
+
+ function unpack(rows, key) {
+ return rows.map(function(row) { return row[key]; });
+}
+
+ var frames = []
+ var x = unpack(rows, 'Date')
+ var y = unpack(rows, 'AAPL.High')
+ var x2 = unpack(rows, 'Date')
+ var y2 = unpack(rows, 'AAPL.Low')
+
+ var n = 100;
+ for (var i = 0; i < n; i++) {
+ frames[i] = {data: [{x: [], y: []}, {x: [], y: []}]}
+ frames[i].data[1].x = x.slice(0, i+1);
+ frames[i].data[1].y = y.slice(0, i+1);
+ frames[i].data[0].x = x2.slice(0, i+1);
+ frames[i].data[0].y = y2.slice(0, i+1);
+ }
+
+ var trace2 = {
+ type: "scatter",
+ mode: "lines",
+ name: 'AAPL High',
+ fill: 'tonexty',
+ x: frames[5].data[1].x,
+ y: frames[5].data[1].y,
+ line: {color: 'grey'}
+ }
+
+ var trace1 = {
+ type: "scatter",
+ mode: "lines",
+ name: 'AAPL Low',
+ x: frames[5].data[0].x,
+ y: frames[5].data[0].y,
+ line: {color: 'lightgrey'}
+ }
+
+ var data = [trace1,trace2];
+
+ var layout = {
+ title: {
+ text: 'Multiple Trace Filled-Area Animation'
+ },
+ xaxis: {
+ range: [frames[99].data[0].x[0], frames[99].data[0].x[99]],
+ showgrid: false
+ },
+ yaxis: {
+ range: [120, 140],
+ showgrid: false
+ },
+ legend: {
+ orientation: 'h',
+ x: 0.5,
+ y: 1.2,
+ xanchor: 'center'
+ },
+ updatemenus: [{
+ x: 0.5,
+ y: 0,
+ yanchor: "top",
+ xanchor: "center",
+ showactive: false,
+ direction: "left",
+ type: "buttons",
+ pad: {"t": 87, "r": 10},
+ buttons: [{
+ method: "animate",
+ args: [null, {
+ fromcurrent: true,
+ transition: {
+ duration: 0,
+ },
+ frame: {
+ duration: 40,
+ redraw: false
+ }
+ }],
+ label: "Play"
+ }, {
+ method: "animate",
+ args: [
+ [null],
+ {
+ mode: "immediate",
+ transition: {
+ duration: 0
+ },
+ frame: {
+ duration: 0,
+ redraw: false
+ }
+ }
+ ],
+ label: "Pause"
+ }]
+ }]
+ };
+
+ Plotly.newPlot('myDiv', data, layout).then(function() {
+ Plotly.addFrames('myDiv', frames);
+ });
+})
diff --git a/docs/content/plotly_js/animations/map-animations/choropleth-animation.html b/docs/content/plotly_js/animations/map-animations/choropleth-animation.html
new file mode 100644
index 00000000000..552dff20a5b
--- /dev/null
+++ b/docs/content/plotly_js/animations/map-animations/choropleth-animation.html
@@ -0,0 +1,130 @@
+---
+name: Map Animations
+language: plotly_js
+suite: map-animations
+order: 1
+sitemap: false
+arrangement: horizontal
+---
+
+d3.csv("https://raw.githubusercontent.com/plotly/datasets/master/gapminder_with_codes.csv", function(err, rows){
+
+ function filter_and_unpack(rows, key, year) {
+ return rows.filter(row => row['year'] == year).map(row => row[key])
+ }
+
+ var frames = []
+ var slider_steps = []
+
+ var n = 11;
+ var num = 1952;
+ for (var i = 0; i <= n; i++) {
+ var z = filter_and_unpack(rows, 'lifeExp', num)
+ var locations = filter_and_unpack(rows, 'iso_alpha', num)
+ frames[i] = {data: [{z: z, locations: locations, text: locations}], name: num}
+ slider_steps.push ({
+ label: num.toString(),
+ method: "animate",
+ args: [[num], {
+ mode: "immediate",
+ transition: {duration: 300},
+ frame: {duration: 300}
+ }
+ ]
+ })
+ num = num + 5
+ }
+
+var data = [{
+ type: 'choropleth',
+ locationmode: 'world',
+ locations: frames[0].data[0].locations,
+ z: frames[0].data[0].z,
+ text: frames[0].data[0].locations,
+ zauto: false,
+ zmin: 30,
+ zmax: 90
+
+}];
+var layout = {
+ title: {
+ text: 'World Life Expectency+Most browsers have a limit of between 8 and 16 WebGL contexts per page. A Plotly WebGL-based figure may use multiple WebGL contexts, but generally you'll be able to render between 4 and 8 figures on one page. + +If you exceed the browser limit on WebGL contexts, some figures won't render and you'll see an error. In the console in Chrome, for example, you'll see the error: "Too many active WebGL contexts. Oldest context will be lost". + +If you encounter WebGL context limits when using WebGL-based figures, you can use [Virtual WebGL](https://github.com/greggman/virtual-webgl), which virtualizes a single WebGL context into multiple contexts. + +To use it, add the following script on your page: +
<script src="https://unpkg.com/virtual-webgl@1.0.6/src/virtual-webgl.js"></script>+ +
{{page.description}}
+ {% include layouts/dashplug.html %} +{{page.description}}
+ {% include layouts/dashplug.html %} +{{page.description}}
+ {% include layouts/dashplug.html %} +{{page.description}}
+ {% include layouts/dashplug.html %} +nonnegative, tozero, and normal Rangemode
+language: plotly_js
+suite: axes
+order: 2
+sitemap: false
+arrangement: horizontal
+---
+var data = [
+ {
+ x: [2, 4, 6],
+ y: [-3, 0, 3],
+ type: 'scatter'
+ }
+];
+var layout = {
+ showlegend: false,
+ xaxis: {
+ rangemode: 'tozero',
+ autorange: true
+ },
+ yaxis: {
+ rangemode: 'nonnegative',
+ autorange: true
+ }
+};
+Plotly.newPlot('myDiv', data, layout);
diff --git a/docs/content/plotly_js/fundamentals/axes/axes-range-type.html b/docs/content/plotly_js/fundamentals/axes/axes-range-type.html
new file mode 100644
index 00000000000..0a8c782b78b
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/axes/axes-range-type.html
@@ -0,0 +1,30 @@
+---
+name: Logarithmic Axes
+language: plotly_js
+suite: axes
+order: 3
+sitemap: false
+arrangement: horizontal
+---
+var trace1 = {
+ x: [0, 1, 2, 3, 4, 5, 6, 7, 8],
+ y: [8, 7, 6, 5, 4, 3, 2, 1, 0],
+ type: 'scatter'
+};
+var trace2 = {
+ x: [0, 1, 2, 3, 4, 5, 6, 7, 8],
+ y: [0, 1, 2, 3, 4, 5, 6, 7, 8],
+ type: 'scatter'
+};
+var data = [trace1, trace2];
+var layout = {
+ xaxis: {
+ type: 'log',
+ autorange: true
+ },
+ yaxis: {
+ type: 'log',
+ autorange: true
+ }
+};
+Plotly.newPlot('myDiv', data, layout);
diff --git a/docs/content/plotly_js/fundamentals/axes/axes-reversed-with-min-max.html b/docs/content/plotly_js/fundamentals/axes/axes-reversed-with-min-max.html
new file mode 100644
index 00000000000..73601c47bf2
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/axes/axes-reversed-with-min-max.html
@@ -0,0 +1,25 @@
+---
+name: Reversed Axes with Range ( Min/Max ) Specified
+language: plotly_js
+suite: axes
+order: 5
+sitemap: false
+arrangement: horizontal
+---
+
+var data = [
+ {
+ x: [0.0, 0.1, 0.2, 0.3, 0.4, 0.51, 0.61, 0.71, 0.81, 0.91, 1.01, 1.11, 1.21, 1.31, 1.41, 1.52, 1.62, 1.72, 1.82, 1.92, 2.02, 2.12, 2.22, 2.32, 2.42, 2.53, 2.63, 2.73, 2.83, 2.93, 3.03, 3.13, 3.23, 3.33, 3.43, 3.54, 3.64, 3.74, 3.84, 3.94, 4.04, 4.14, 4.24, 4.34, 4.44, 4.55, 4.65, 4.75, 4.85, 4.95, 5.05, 5.15, 5.25, 5.35, 5.45, 5.56, 5.66, 5.76, 5.86, 5.96, 6.06, 6.16, 6.26, 6.36, 6.46, 6.57, 6.67, 6.77, 6.87, 6.97, 7.07, 7.17, 7.27, 7.37, 7.47, 7.58, 7.68, 7.78, 7.88, 7.98, 8.08, 8.18, 8.28, 8.38, 8.48, 8.59, 8.69, 8.79, 8.89, 8.99, 9.09, 9.19, 9.29, 9.39, 9.49, 9.6, 9.7, 9.8, 9.9, 10.0],
+ y: [63, 65, 78, 92, 12, 50, 17, 31, 1, 25, 76, 66, 83, 38, 95, 23, 20, 88, 31, 26, 39, 74, 11, 84, 7, 13, 30, 85, 80, 47, 12, 89, 12, 35, 99, 78, 77, 56, 26, 13, 96, 55, 19, 88, 31, 1, 42, 39, 99, 62, 68, 61, 45, 44, 10, 25, 89, 82, 28, 2, 24, 1, 32, 16, 29, 40, 55, 75, 20, 41, 67, 33, 92, 14, 16, 22, 86, 55, 37, 42, 42, 85, 60, 11, 54, 3, 34, 29, 59, 28, 25, 67, 90, 10, 29, 16, 51, 17, 2, 34],
+ mode: "markers"
+ }
+];
+var layout = {
+ title: {
+ text: "Reversed Axis with Min/Max"
+ },
+ xaxis: {
+ range: [10, 0]
+ }
+};
+Plotly.newPlot('myDiv', data, layout);
\ No newline at end of file
diff --git a/docs/content/plotly_js/fundamentals/axes/axes-reversed.html b/docs/content/plotly_js/fundamentals/axes/axes-reversed.html
new file mode 100644
index 00000000000..c1925f99037
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/axes/axes-reversed.html
@@ -0,0 +1,17 @@
+---
+name: Reversed Axes
+language: plotly_js
+suite: axes
+order: 4
+sitemap: false
+arrangement: horizontal
+---
+var data = [
+ {
+ x: [1, 2],
+ y: [1, 2],
+ type: 'scatter'
+ }
+];
+var layout = {xaxis: {autorange: 'reversed'}};
+Plotly.newPlot('myDiv', data, layout);
diff --git a/docs/content/plotly_js/fundamentals/axes/axes-ticks.html b/docs/content/plotly_js/fundamentals/axes/axes-ticks.html
new file mode 100644
index 00000000000..3a0241c8ab7
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/axes/axes-ticks.html
@@ -0,0 +1,40 @@
+---
+name: Tick Placement, Color, and Style
+language: plotly_js
+suite: axes
+order: 0
+sitemap: false
+arrangement: horizontal
+---
+var trace1 = {
+ x: [0, 1, 2, 3, 4, 5, 6, 7, 8],
+ y: [8, 7, 6, 5, 4, 3, 2, 1, 0],
+ type: 'scatter'
+};
+var trace2 = {
+ x: [0, 1, 2, 3, 4, 5, 6, 7, 8],
+ y: [0, 1, 2, 3, 4, 5, 6, 7, 8],
+ type: 'scatter'
+};
+var data = [trace1, trace2];
+var layout = {
+ xaxis: {
+ tickmode: 'linear',
+ ticks: 'outside',
+ tick0: 0,
+ dtick: 0.25,
+ ticklen: 8,
+ tickwidth: 4,
+ tickcolor: '#000'
+ },
+ yaxis: {
+ tickmode: 'linear',
+ ticks: 'outside',
+ tick0: 0,
+ dtick: 0.25,
+ ticklen: 8,
+ tickwidth: 4,
+ tickcolor: '#000'
+ }
+};
+Plotly.newPlot('myDiv', data, layout);
diff --git a/docs/content/plotly_js/fundamentals/axes/axes_plotly_js_index.html b/docs/content/plotly_js/fundamentals/axes/axes_plotly_js_index.html
new file mode 100644
index 00000000000..2b2c96adb86
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/axes/axes_plotly_js_index.html
@@ -0,0 +1,17 @@
+---
+description: How to adjust axes properties in D3.js-based javascript charts. Seven
+ examples of linear and logarithmic axes, axes titles, and styling and coloring axes
+ and grid lines.
+display_as: file_settings
+language: plotly_js
+layout: base
+name: Axes
+order: 15
+page_type: u-guide
+permalink: javascript/axes/
+redirect_from: javascript-graphing-library/axes/
+thumbnail: thumbnail/axes.png
+---
+
+{% assign examples = site.posts | where:"language","plotly_js" | where:"suite","axes" | sort: "order" %}
+{% include posts/auto_examples.html examples=examples %}
\ No newline at end of file
diff --git a/docs/content/plotly_js/fundamentals/axes/b64-arrays.html b/docs/content/plotly_js/fundamentals/axes/b64-arrays.html
new file mode 100644
index 00000000000..2357720a2d1
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/axes/b64-arrays.html
@@ -0,0 +1,34 @@
+---
+name: Use Base64-Encoded Typed Arrays
+language: plotly_js
+suite: axes
+order: 11
+sitemap: false
+arrangement: horizontal
+markdown_content: |
+ Plotly.js 2.28.0 and later supports using base64-encoded typed arrays. To use a base64-encoded typed array, pass an object with the keys `bdata` (a base64-encoded string or the ArrayBuffer of an integer or float typed array) and `dtype` (the data type of the array, where the supported types are `float64`, `float32`, `int32`, `uint32`, `int16`, `uint16`, `int8`, `uint8`, and `uint8c`). You can also specify `shape` for multidimensional arrays. For example, `'4,10'` would be a 2D array with 4 rows and 10 columns.
+---
+var x = 'VVVVVVVV1b8AAAAAAAAAAFVVVVVVVdU/'
+var y = 'q6qqPquqqr4='
+var z = 'AABkAMgALAGQAfQB'
+
+var trace1 = {
+ x: {
+ bdata: x,
+ dtype: 'f8'
+ },
+ y: {
+ bdata: y,
+ dtype: 'f4'
+ },
+ z: {
+ bdata: z,
+ dtype: 'u2',
+ shape: '2,3'
+ },
+ type: 'surface'
+};
+
+var data = [trace1];
+
+Plotly.newPlot('myDiv', data);
\ No newline at end of file
diff --git a/docs/content/plotly_js/fundamentals/axes/enumerated-ticks-with-tickvals-and-ticktext.html b/docs/content/plotly_js/fundamentals/axes/enumerated-ticks-with-tickvals-and-ticktext.html
new file mode 100644
index 00000000000..32020def0e2
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/axes/enumerated-ticks-with-tickvals-and-ticktext.html
@@ -0,0 +1,38 @@
+---
+name: Enumerated Ticks with Tickvals and Ticktext
+language: plotly_js
+suite: axes
+order: 2
+sitemap: false
+arrangement: horizontal
+---
+d3.csv('https://raw.githubusercontent.com/plotly/datasets/master/stockdata.csv', function(err, rows){
+function unpack(rows, key) {
+ return rows.map(function(row)
+ { return row[key]; });}
+
+var trace1 = {
+ x:unpack(rows, 'Date'),
+ y: unpack(rows, 'IBM'),
+ mode: 'markers',
+ marker: {
+ size: 7,
+ line: {
+ width: 0.5},
+ opacity: 0.8},
+ type: 'scatter'
+};
+
+var layout = {
+ title: {
+ text: 'IBM Stock Data: Jan 2007 - Mar 2016'
+ },
+ xaxis: {
+ tickvals: ['2007-01-01', '2007-09-01', '2008-01-01', '2008-09-01', '2009-01-01', '2010-01-01', '2011-01-01', '2011-02-14', '2012-01-01', '2013-01-01', '2014-01-01', '2015-01-01', '2016-01-01'],
+ ticktext: ['2007', 'Financial Crisis Starts', '2008', 'Financial Crisis Ends', '2009', '2010', '2011', 'IBM wins Jeopardy!', '2012', '2013', '2014', '2015', '2016']
+ }
+};
+
+var data = [trace1];
+Plotly.newPlot('myDiv', data, layout);
+});
diff --git a/docs/content/plotly_js/fundamentals/axes/title_standoff.html b/docs/content/plotly_js/fundamentals/axes/title_standoff.html
new file mode 100644
index 00000000000..7670557034f
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/axes/title_standoff.html
@@ -0,0 +1,36 @@
+---
+name: Set Axis Title Position
+language: plotly_js
+suite: axes
+order: 3.5
+sitemap: false
+arrangement: horizontal
+markdown_content: |
+ This example sets `standoff` attribute to cartesian axes to determine the distance between the tick labels and the axis title.
+ Note that the axis title position is always constrained within the margins, so the actual standoff distance is always less than the set or default value.
+ By setting standoff and turning [automargin](https://plotly.com/javascript/setting-graph-size/#automatically-adjust-margins) on, plotly.js will push the margins to fit the axis title at given standoff distance.
+---
+var data = [{
+ mode: "lines+markers",
+ x:["December", "January", "February"],
+ y:[4,1,3]
+ }]
+
+ var layout = {
+ margin: {t:0,r:0,b:0,l:20},
+ xaxis: {
+ automargin: true,
+ tickangle: 90,
+ title: {
+ text: "Month",
+ standoff: 20
+ }},
+ yaxis: {
+ automargin: true,
+ tickangle: 90,
+ title: {
+ text: "Temperature",
+ standoff: 40
+ }}}
+
+Plotly.newPlot('myDiv', data, layout)
\ No newline at end of file
diff --git a/docs/content/plotly_js/fundamentals/axes/zeroline.html b/docs/content/plotly_js/fundamentals/axes/zeroline.html
new file mode 100644
index 00000000000..3c7d8a25072
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/axes/zeroline.html
@@ -0,0 +1,30 @@
+---
+name: Zero Line Layer
+language: plotly_js
+suite: axes
+order: 12
+sitemap: false
+arrangement: horizontal
+markdown_content: |
+ *New in 3.1*
+
+ By default, zero lines are displayed below traces. Set `zerolinelayer="above traces"` on an axis to display its zero line above traces.
+---
+var trace1 = {
+ x: ['A', 'B', 'C', 'D', 'A'],
+ y: [2, 0, 4, -3, 2],
+ fill: 'toself',
+ mode: 'none',
+ fillcolor: 'lightpink',
+ type: 'scatter'
+};
+
+var data = [trace1];
+
+var layout = {
+ yaxis: {
+ zerolinelayer: "above traces" // Change to "below traces" to see the difference
+ }
+};
+
+Plotly.newPlot('myDiv', data, layout);
diff --git a/docs/content/plotly_js/fundamentals/colorscales/Blackbody-heatmap.html b/docs/content/plotly_js/fundamentals/colorscales/Blackbody-heatmap.html
new file mode 100644
index 00000000000..793cf150233
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/Blackbody-heatmap.html
@@ -0,0 +1,22 @@
+---
+name: Blackbody Colorscale
+language: plotly_js
+suite: colorscales
+order: 16
+sitemap: false
+arrangement: horizontal
+---
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: 'Blackbody',
+ type: 'heatmap'
+ }
+];
+var layout = {
+ title: {
+ text: 'Blackbody'
+ }
+};
+Plotly.newPlot('myDiv', data, layout);
+});
diff --git a/docs/content/plotly_js/fundamentals/colorscales/Bluered-heatmap.html b/docs/content/plotly_js/fundamentals/colorscales/Bluered-heatmap.html
new file mode 100644
index 00000000000..e754a1eca40
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/Bluered-heatmap.html
@@ -0,0 +1,16 @@
+---
+name: Bluered Colorscale
+language: plotly_js
+suite: colorscales
+order: 16
+sitemap: false
+arrangement: horizontal
+---
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: 'Bluered',
+ type: 'heatmap'
+}];
+Plotly.newPlot('myDiv', data);
+ });
diff --git a/docs/content/plotly_js/fundamentals/colorscales/Earth-heatmap.html b/docs/content/plotly_js/fundamentals/colorscales/Earth-heatmap.html
new file mode 100644
index 00000000000..424fd581878
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/Earth-heatmap.html
@@ -0,0 +1,17 @@
+---
+name: Earth Colorscale
+language: plotly_js
+suite: colorscales
+order: 16
+sitemap: false
+arrangement: horizontal
+---
+
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: 'Earth',
+ type: 'heatmap'
+}];
+Plotly.newPlot('myDiv', data);
+ });
diff --git a/docs/content/plotly_js/fundamentals/colorscales/Electric-heatmap.html b/docs/content/plotly_js/fundamentals/colorscales/Electric-heatmap.html
new file mode 100644
index 00000000000..5a316c6ae31
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/Electric-heatmap.html
@@ -0,0 +1,16 @@
+---
+name: Electric Colorscale
+language: plotly_js
+suite: colorscales
+order: 16
+sitemap: false
+arrangement: horizontal
+---
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: 'Electric',
+ type: 'heatmap'
+}];
+Plotly.newPlot('myDiv', data);
+ });
diff --git a/docs/content/plotly_js/fundamentals/colorscales/Greens-heatmap.html b/docs/content/plotly_js/fundamentals/colorscales/Greens-heatmap.html
new file mode 100644
index 00000000000..b5ff8f2f913
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/Greens-heatmap.html
@@ -0,0 +1,22 @@
+---
+name: Greens Colorscale
+language: plotly_js
+suite: colorscales
+order: 16
+sitemap: false
+arrangement: horizontal
+---
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: 'Greens',
+ type: 'heatmap'
+ }
+];
+var layout = {
+ title: {
+ text: 'Greens'
+ }
+};
+Plotly.newPlot('myDiv', data, layout);
+});
diff --git a/docs/content/plotly_js/fundamentals/colorscales/Greys-heatmap.html b/docs/content/plotly_js/fundamentals/colorscales/Greys-heatmap.html
new file mode 100644
index 00000000000..4470c4bc2d6
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/Greys-heatmap.html
@@ -0,0 +1,22 @@
+---
+name: Greys Colorscale
+language: plotly_js
+suite: colorscales
+order: 16
+sitemap: false
+arrangement: horizontal
+---
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: 'Greys',
+ type: 'heatmap'
+ }
+];
+var layout = {
+ title: {
+ text: 'Greys'
+ }
+};
+Plotly.newPlot('myDiv', data, layout);
+});
diff --git a/docs/content/plotly_js/fundamentals/colorscales/Hot-heatmap.html b/docs/content/plotly_js/fundamentals/colorscales/Hot-heatmap.html
new file mode 100644
index 00000000000..671a98ee711
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/Hot-heatmap.html
@@ -0,0 +1,17 @@
+---
+name: Hot Colorscale
+language: plotly_js
+suite: colorscales
+order: 16
+sitemap: false
+arrangement: horizontal
+---
+
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: 'Hot',
+ type: 'heatmap'
+}];
+Plotly.newPlot('myDiv', data);
+ });
diff --git a/docs/content/plotly_js/fundamentals/colorscales/Jet-heatmap.html b/docs/content/plotly_js/fundamentals/colorscales/Jet-heatmap.html
new file mode 100644
index 00000000000..f5cf906376a
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/Jet-heatmap.html
@@ -0,0 +1,23 @@
+---
+name: Jet Colorscale
+language: plotly_js
+suite: colorscales
+order: 16
+sitemap: false
+arrangement: horizontal
+---
+
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: 'Jet',
+ type: 'heatmap'
+ }
+];
+var layout = {
+ title: {
+ text: 'Jet'
+ }
+};
+Plotly.newPlot('myDiv', data, layout);
+});
diff --git a/docs/content/plotly_js/fundamentals/colorscales/Picnic-heatmap.html b/docs/content/plotly_js/fundamentals/colorscales/Picnic-heatmap.html
new file mode 100644
index 00000000000..e4721eafc31
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/Picnic-heatmap.html
@@ -0,0 +1,22 @@
+---
+name: Picnic Colorscale
+language: plotly_js
+suite: colorscales
+order: 16
+sitemap: false
+arrangement: horizontal
+---
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: 'Picnic',
+ type: 'heatmap'
+ }
+];
+var layout = {
+ title: {
+ text: 'Picnic'
+ }
+};
+Plotly.newPlot('myDiv', data, layout);
+});
diff --git a/docs/content/plotly_js/fundamentals/colorscales/Portland-heatmap.html b/docs/content/plotly_js/fundamentals/colorscales/Portland-heatmap.html
new file mode 100644
index 00000000000..f402d7a600a
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/Portland-heatmap.html
@@ -0,0 +1,23 @@
+---
+name: Portland Heatmap
+language: plotly_js
+suite: colorscales
+order: 16
+sitemap: false
+arrangement: horizontal
+---
+
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: 'Portland',
+ type: 'heatmap'
+ }
+];
+var layout = {
+ title: {
+ text: 'Portland'
+ }
+};
+Plotly.newPlot('myDiv', data, layout);
+});
diff --git a/docs/content/plotly_js/fundamentals/colorscales/RdBu-heatmap.html b/docs/content/plotly_js/fundamentals/colorscales/RdBu-heatmap.html
new file mode 100644
index 00000000000..6fd7583f0a2
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/RdBu-heatmap.html
@@ -0,0 +1,23 @@
+---
+name: RdBu Colorscale
+language: plotly_js
+suite: colorscales
+order: 16
+sitemap: false
+arrangement: horizontal
+---
+
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: 'RdBu',
+ type: 'heatmap'
+ }
+];
+var layout = {
+ title: {
+ text: 'RdBu'
+ }
+};
+Plotly.newPlot('myDiv', data, layout);
+});
diff --git a/docs/content/plotly_js/fundamentals/colorscales/YIGnBu-heatmap.html b/docs/content/plotly_js/fundamentals/colorscales/YIGnBu-heatmap.html
new file mode 100644
index 00000000000..7f720e6e1ab
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/YIGnBu-heatmap.html
@@ -0,0 +1,22 @@
+---
+name: YlGnBu Colorscale
+language: plotly_js
+suite: colorscales
+order: 16
+sitemap: false
+arrangement: horizontal
+---
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: 'YlGnBu',
+ type: 'heatmap'
+ }
+];
+var layout = {
+ title: {
+ text: 'YlGnBu'
+ }
+};
+Plotly.newPlot('myDiv', data, layout);
+});
diff --git a/docs/content/plotly_js/fundamentals/colorscales/YIOrRd-heatmap.html b/docs/content/plotly_js/fundamentals/colorscales/YIOrRd-heatmap.html
new file mode 100644
index 00000000000..ba580ee85c9
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/YIOrRd-heatmap.html
@@ -0,0 +1,23 @@
+---
+name: YlOrRd Heatmap
+language: plotly_js
+suite: colorscales
+order: 16
+sitemap: false
+arrangement: horizontal
+---
+
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: 'YlOrRd',
+ type: 'heatmap'
+ }
+];
+var layout = {
+ title: {
+ text: 'YlOrRd'
+ }
+};
+Plotly.newPlot('myDiv', data, layout);
+});
diff --git a/docs/content/plotly_js/fundamentals/colorscales/colorscale-for-contour-plot.html b/docs/content/plotly_js/fundamentals/colorscales/colorscale-for-contour-plot.html
new file mode 100644
index 00000000000..7dce3955707
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/colorscale-for-contour-plot.html
@@ -0,0 +1,27 @@
+---
+name: Colorscale for Contour Plot
+language: plotly_js
+suite: colorscales
+order: 20
+sitemap: false
+arrangement: horizontal
+---
+
+var data = [ {
+ z: [[10, 10.625, 12.5, 15.625, 20],
+ [5.625, 6.25, 8.125, 11.25, 15.625],
+ [2.5, 3.125, 5., 8.125, 12.5],
+ [0.625, 1.25, 3.125, 6.25, 10.625],
+ [0, 0.625, 2.5, 5.625, 10]],
+ type: 'contour',
+ colorscale: 'Jet'
+}
+];
+
+var layout = {
+ title: {
+ text: 'Colorscale for Contour Plot'
+ }
+};
+
+Plotly.newPlot('myDiv', data, layout);
\ No newline at end of file
diff --git a/docs/content/plotly_js/fundamentals/colorscales/colorscales_new_plotlyjs_index.html b/docs/content/plotly_js/fundamentals/colorscales/colorscales_new_plotlyjs_index.html
new file mode 100644
index 00000000000..8d026dfe310
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/colorscales_new_plotlyjs_index.html
@@ -0,0 +1,16 @@
+---
+description: How to set colorscales and heatmap colorscales in D3.js-based JavaScript
+ charts in Plotly.js. Divergent, sequential, and qualitative colorscales.
+display_as: file_settings
+language: plotly_js
+layout: base
+name: Colorscales
+order: 6
+page_type: u-guide
+permalink: javascript/colorscales/
+redirect_from: javascript-graphing-library/heatmap-and-contour-colorscales/
+thumbnail: thumbnail/heatmap_colorscale.jpg
+---
+
+{% assign examples = site.posts | where:'language','plotly_js' | where:'suite','colorscales' | sort: 'order' %}
+{% include posts/auto_examples.html examples=examples %}
\ No newline at end of file
diff --git a/docs/content/plotly_js/fundamentals/colorscales/custom-colorscale-for-contour-plot.html b/docs/content/plotly_js/fundamentals/colorscales/custom-colorscale-for-contour-plot.html
new file mode 100644
index 00000000000..ade05d99c7c
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/custom-colorscale-for-contour-plot.html
@@ -0,0 +1,26 @@
+---
+name: Custom Colorscale for Contour Plot
+language: plotly_js
+suite: colorscales
+order: 21
+sitemap: false
+arrangement: horizontal
+---
+var data = [ {
+ z: [[10, 10.625, 12.5, 15.625, 20],
+ [5.625, 6.25, 8.125, 11.25, 15.625],
+ [2.5, 3.125, 5., 8.125, 12.5],
+ [0.625, 1.25, 3.125, 6.25, 10.625],
+ [0, 0.625, 2.5, 5.625, 10]],
+ type: 'contour',
+ colorscale: [[0, 'rgb(166,206,227)'], [0.25, 'rgb(31,120,180)'], [0.45, 'rgb(178,223,138)'], [0.65, 'rgb(51,160,44)'], [0.85, 'rgb(251,154,153)'], [1, 'rgb(227,26,28)']]
+}
+];
+
+var layout = {
+ title: {
+ text: 'Custom Contour Plot Colorscale'
+ }
+};
+
+Plotly.newPlot('myDiv', data, layout);
diff --git a/docs/content/plotly_js/fundamentals/colorscales/custom-colorscale.html b/docs/content/plotly_js/fundamentals/colorscales/custom-colorscale.html
new file mode 100644
index 00000000000..ef7920aa280
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/custom-colorscale.html
@@ -0,0 +1,27 @@
+---
+name: Custom Colorscale
+language: plotly_js
+suite: colorscales
+order: 3
+sitemap: false
+arrangement: horizontal
+---
+d3.json('https://raw.githubusercontent.com/plotly/datasets/master/custom_heatmap_colorscale.json', function(figure) {
+var data = [{
+ z: figure.z,
+ colorscale: [
+ ['0.0', 'rgb(165,0,38)'],
+ ['0.111111111111', 'rgb(215,48,39)'],
+ ['0.222222222222', 'rgb(244,109,67)'],
+ ['0.333333333333', 'rgb(253,174,97)'],
+ ['0.444444444444', 'rgb(254,224,144)'],
+ ['0.555555555556', 'rgb(224,243,248)'],
+ ['0.666666666667', 'rgb(171,217,233)'],
+ ['0.777777777778', 'rgb(116,173,209)'],
+ ['0.888888888889', 'rgb(69,117,180)'],
+ ['1.0', 'rgb(49,54,149)']
+ ],
+ type: 'heatmap'
+}];
+Plotly.newPlot('myDiv', data);
+ });
diff --git a/docs/content/plotly_js/fundamentals/colorscales/discretized-heatmap-colorscale.html b/docs/content/plotly_js/fundamentals/colorscales/discretized-heatmap-colorscale.html
new file mode 100644
index 00000000000..183fcfc4577
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorscales/discretized-heatmap-colorscale.html
@@ -0,0 +1,68 @@
+---
+name: Custom Discretized Heatmap Colorscale
+language: plotly_js
+suite: colorscales
+order: 22
+sitemap: false
+arrangement: horizontal
+---
+
+var data = [
+ {
+ z: [[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]],
+ colorscale: [
+
+// Let first 10% (0.1) of the values have color rgb(0, 0, 0)
+
+ [0, 'rgb(0, 0, 0)'],
+ [0.1, 'rgb(0, 0, 0)'],
+
+// Let values between 10-20% of the min and max of z
+// have color rgb(20, 20, 20)
+
+ [0.1, 'rgb(20, 20, 20)'],
+ [0.2, 'rgb(20, 20, 20)'],
+
+// Values between 20-30% of the min and max of z
+//have color rgb(40, 40, 40)
+
+ [0.2, 'rgb(40, 40, 40)'],
+ [0.3, 'rgb(40, 40, 40)'],
+
+ [0.3, 'rgb(60, 60, 60)'],
+ [0.4, 'rgb(60, 60, 60)'],
+
+ [0.4, 'rgb(80, 80, 80)'],
+ [0.5, 'rgb(80, 80, 80)'],
+
+ [0.5, 'rgb(100, 100, 100)'],
+ [0.6, 'rgb(100, 100, 100)'],
+
+ [0.6, 'rgb(120, 120, 120)'],
+ [0.7, 'rgb(120, 120, 120)'],
+
+ [0.7, 'rgb(140, 140, 140)'],
+ [0.8, 'rgb(140, 140, 140)'],
+
+ [0.8, 'rgb(160, 160, 160)'],
+ [0.9, 'rgb(160, 160, 160)'],
+
+ [0.9, 'rgb(180, 180, 180)'],
+ [1.0, 'rgb(180, 180, 180)']
+ ],
+ type: 'heatmap',
+ colorbar:{
+ tickmode: 'linear',
+ tick0: 0,
+ dtick: 1
+ }
+ }
+];
+
+var layout = {
+ title: {
+ text: 'CUSTOM DISCRETIZED HEATMAP COLORSCALE'
+ }
+};
+
+Plotly.newPlot('myDiv', data, layout);
diff --git a/docs/content/plotly_js/fundamentals/colorway/colorway.html b/docs/content/plotly_js/fundamentals/colorway/colorway.html
new file mode 100644
index 00000000000..506f5b94e80
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorway/colorway.html
@@ -0,0 +1,34 @@
+---
+name: Set Default Trace Colors with colorway
+language: plotly_js
+suite: colorway
+order: 1
+sitemap: false
+arrangement: horizontal
+---
+function linspace(a,b,n) {
+ return d3.range(n).map(function(i){return a+i*(b-a)/(n-1);});
+}
+
+const parabolaGen = (a, b) =>
+ x => x*x*a + b;
+
+var as = linspace(1, 3, 7);
+var bs = linspace(2, 14, 7);
+var x = linspace(-1, 3, 50);
+var data = [];
+
+for (i=0; i< as.length; i++ ){
+ data.push({
+ type: "scatter",
+ mode: "lines",
+ x: x,
+ y: x.map(parabolaGen(as[i],bs[i]))
+ })
+}
+
+var layout = {
+ colorway : ['#f3cec9', '#e7a4b6', '#cd7eaf', '#a262a9', '#6f4d96', '#3d3b72', '#182844']
+};
+
+Plotly.newPlot('myDiv', data, layout);
diff --git a/docs/content/plotly_js/fundamentals/colorway/colorway_plotlyjs_index.html b/docs/content/plotly_js/fundamentals/colorway/colorway_plotlyjs_index.html
new file mode 100644
index 00000000000..f2fe2bceffb
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/colorway/colorway_plotlyjs_index.html
@@ -0,0 +1,14 @@
+---
+description: How to use colorway to set default trace colors in JavaScript with Plotly.
+display_as: file_settings
+language: plotly_js
+layout: base
+name: Colorway
+order: 7
+page_type: u-guide
+permalink: javascript/colorway/
+thumbnail: thumbnail/colorway.jpg
+---
+
+{% assign examples = site.posts | where:"language","plotly_js" | where:"suite","colorway" | sort: "order" %}
+{% include posts/auto_examples.html examples=examples %}
\ No newline at end of file
diff --git a/docs/content/plotly_js/fundamentals/config-options/add-button-to-modebar.html b/docs/content/plotly_js/fundamentals/config-options/add-button-to-modebar.html
new file mode 100644
index 00000000000..9edc5c1e449
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/config-options/add-button-to-modebar.html
@@ -0,0 +1,48 @@
+---
+name: Add Buttons to ModeBar
+language: plotly_js
+suite: configuration
+order: 5.7
+sitemap: false
+arrangement: horizontal
+markdown_content: |
+ The following example shows how to add a button to your modebar, either by using one of the [Plotly icons](https://github.com/plotly/plotly.js/blob/master/src/fonts/ploticon.js) or an [arbitrary icon](https://fontawesome.com/icons?d=gallery&m=free) with a custom behaviour.
+---
+var icon1 = {
+ 'width': 500,
+ 'height': 600,
+ 'path': 'M224 512c35.32 0 63.97-28.65 63.97-64H160.03c0 35.35 28.65 64 63.97 64zm215.39-149.71c-19.32-20.76-55.47-51.99-55.47-154.29 0-77.7-54.48-139.9-127.94-155.16V32c0-17.67-14.32-32-31.98-32s-31.98 14.33-31.98 32v20.84C118.56 68.1 64.08 130.3 64.08 208c0 102.3-36.15 133.53-55.47 154.29-6 6.45-8.66 14.16-8.61 21.71.11 16.4 12.98 32 32.1 32h383.8c19.12 0 32-15.6 32.1-32 .05-7.55-2.61-15.27-8.61-21.71z'
+}
+
+var colors = ['green', 'red', 'blue']
+var data = [{
+ mode: 'lines',
+ y: [2, 1, 2],
+ line: {color: colors[0], width: 3, shape: 'spline'}
+}]
+
+var layout = {
+ title: {
+ text: 'add mode bar button with custom icon'
+ }
+}
+
+var config = {
+ displayModeBar: true,
+ modeBarButtonsToAdd: [
+ {
+ name: 'color toggler',
+ icon: icon1,
+ click: function(gd) {
+ var newColor = colors[Math.floor(3 * Math.random())]
+ Plotly.restyle(gd, 'line.color', newColor)
+ }},
+ {
+ name: 'button1',
+ icon: Plotly.Icons.pencil,
+ direction: 'up',
+ click: function(gd) {alert('button1')
+ }}],
+ modeBarButtonsToRemove: ['pan2d','select2d','lasso2d','resetScale2d','zoomOut2d']}
+
+Plotly.newPlot('myDiv', data, layout, config)
\ No newline at end of file
diff --git a/docs/content/plotly_js/fundamentals/config-options/button-disable-axis.html b/docs/content/plotly_js/fundamentals/config-options/button-disable-axis.html
new file mode 100644
index 00000000000..185c2fae7ab
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/config-options/button-disable-axis.html
@@ -0,0 +1,34 @@
+---
+name: Disabling Buttons for Specific Axes
+language: plotly_js
+suite: configuration
+order: 5.8
+sitemap: false
+arrangement: horizontal
+markdown_content: |
+ *New in 3.1*
+
+ Disabling the zoom in, zoom out, and autoscale buttons for specific axes is supported on cartesian axes using the `modebardisable` attribute. In the following example, the zoom in and zoom out buttons are disabled on the `xaxis`, meaning these buttons only zoom in and out on the `yaxis`. Disable the autoscale button using `modebardisable='autoscale'`. You can also disable both autoscaling and zoom buttons using `modebardisable='zoominout+autoscale'`.
+---
+var data = [{
+ type: "scatter",
+ mode: "lines+markers",
+ x: ["2023-01-01", "2023-02-01", "2023-03-01", "2023-04-01", "2023-05-01", "2023-06-01"],
+ y: [150, 160, 155, 170, 165, 180],
+ name: "Google Stock Price"
+}];
+
+var layout = {
+ title: "Google Stock Price Over Time with Mode Bar Disabled",
+ xaxis: {
+ title: "Date",
+ type: "date",
+ // Try zooming in or out using the modebar buttons. These only apply to the yaxis in this example.
+ modebardisable: "zoominout"
+ },
+ yaxis: {
+ title: "Stock Price (USD)"
+ }
+};
+
+Plotly.newPlot("myDiv", data, layout);
diff --git a/docs/content/plotly_js/fundamentals/config-options/config-locale.html b/docs/content/plotly_js/fundamentals/config-options/config-locale.html
new file mode 100644
index 00000000000..d6eb1ace4dd
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/config-options/config-locale.html
@@ -0,0 +1,40 @@
+---
+name: Change the Default Locale
+language: plotly_js
+suite: configuration
+order: 7.5
+sitemap: false
+arrangement: horizontal
+markdown_content: |
+ Load and register a non-default locale by adding ``
+ to your HTML after the plotly.js tag and then reference the locale in the `config`. For Example, the codepen example below has
+ `` in its HTML. For more information and a list of available locales, see
+ [https://github.com/plotly/plotly.js/blob/master/dist/README.md#to-include-localization](https://github.com/plotly/plotly.js/blob/master/dist/README.md#to-include-localization)
+---
+var trace1 = {
+ type: "scatter",
+ mode: "lines",
+ x: ['2018-01-01', '2018-08-31'],
+ y: [10, 5],
+ line: {color: '#17BECF'}
+};
+
+var trace2 = {
+ type: "scatter",
+ mode: "lines",
+ x: ['2018-01-01', '2018-08-31'],
+ y: [3,7],
+ line: {color: '#7F7F7F'}
+};
+
+var data = [trace1,trace2];
+
+var layout = {
+ title: {
+ text: 'Custom Locale'
+ }
+};
+
+var config = {locale: 'fr'};
+
+Plotly.newPlot('myDiv', data, layout, config);
\ No newline at end of file
diff --git a/docs/content/plotly_js/fundamentals/config-options/config-opt-displaylogo.html b/docs/content/plotly_js/fundamentals/config-options/config-opt-displaylogo.html
new file mode 100644
index 00000000000..c725877df12
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/config-options/config-opt-displaylogo.html
@@ -0,0 +1,25 @@
+---
+name: Hide the Plotly Logo on the Modebar
+language: plotly_js
+suite: configuration
+order: 8
+sitemap: false
+arrangement: horizontal
+---
+
+var trace1 = {
+ x:['trees', 'flowers', 'hedges'],
+ y: [90, 130, 40],
+ type: 'bar'
+};
+
+var data = [trace1];
+
+var layout = {
+ title: {
+ text: 'Hide the Plotly Logo on the Modebar'
+ },
+ showlegend: false
+};
+
+Plotly.newPlot('myDiv', data, layout, {displaylogo: false});
diff --git a/docs/content/plotly_js/fundamentals/config-options/config-opt-hide-modebar.html b/docs/content/plotly_js/fundamentals/config-options/config-opt-hide-modebar.html
new file mode 100644
index 00000000000..5fdc97667e2
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/config-options/config-opt-hide-modebar.html
@@ -0,0 +1,36 @@
+---
+name: Never Display The Modebar
+language: plotly_js
+suite: configuration
+order: 5
+sitemap: false
+arrangement: horizontal
+markdown_content: |
+ When users hover over a figure generated with `plotly.js`, a `modebar` appears in the top-right of the figure. This presents users with several options for interacting with the figure.
+
+ By default, the `modebar` is only visible while the user is hovering over the chart. If you would like the `modebar` to never be visible, then set the `displayModeBar` attribute in the `config` of your figure to `false`.
+---
+var trace1 = {
+ x:['Zebras', 'Lions', 'Pelicans'],
+ y: [90, 40, 60],
+ type: 'bar',
+ name: 'New York Zoo'
+};
+
+var trace2 = {
+ x:['Zebras', 'Lions', 'Pelicans'],
+ y: [10, 80, 45],
+ type: 'bar',
+ name: 'San Francisco Zoo'
+};
+
+var data = [trace1, trace2];
+
+var layout = {
+ title: {
+ text: 'Hide the Modebar'
+ },
+ showlegend: true
+};
+
+Plotly.newPlot('myDiv', data, layout, {displayModeBar: false});
diff --git a/docs/content/plotly_js/fundamentals/config-options/config-opt-link-text.html b/docs/content/plotly_js/fundamentals/config-options/config-opt-link-text.html
new file mode 100644
index 00000000000..e3f409e76c5
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/config-options/config-opt-link-text.html
@@ -0,0 +1,27 @@
+---
+name: Customize The `Edit Chart` Link Text
+language: plotly_js
+suite: configuration
+order: 7
+sitemap: false
+arrangement: horizontal
+---
+var data = [{
+ z: [[0, 1, 2, 3, 4, 5, 6],
+ [1, 9, 4, 7, 5, 2, 4],
+ [2, 4, 2, 1, 6, 9, 3]],
+ type: 'heatmap'}]
+
+var layout = {
+ title: {
+ text: 'Customize The Edit Chart Link Text'
+ }
+};
+
+var config = {
+ showLink: true,
+ plotlyServerURL: "https://chart-studio.plotly.com",
+ linkText: 'This text is custom!'
+};
+
+Plotly.newPlot('myDiv', data, layout, config)
diff --git a/docs/content/plotly_js/fundamentals/config-options/config-opt-responsive.html b/docs/content/plotly_js/fundamentals/config-options/config-opt-responsive.html
new file mode 100644
index 00000000000..a5df6f726ee
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/config-options/config-opt-responsive.html
@@ -0,0 +1,30 @@
+---
+name: Making a Responsive Chart
+language: plotly_js
+suite: configuration
+order: 10
+sitemap: false
+arrangement: horizontal
+---
+var trace1 = {
+ type: 'bar',
+ x: [1, 2, 3, 4],
+ y: [5, 10, 2, 8],
+ marker: {
+ color: '#C8A2C8',
+ line: {
+ width: 2.5
+ }
+ }
+};
+
+var data = [ trace1 ];
+
+var layout = {
+ title: {
+ text: 'Responsive to window size!'
+ },
+ font: {size: 18}
+};
+
+Plotly.newPlot('myDiv', data, layout, {responsive: true});
diff --git a/docs/content/plotly_js/fundamentals/config-options/config-opt-scrollzoom.html b/docs/content/plotly_js/fundamentals/config-options/config-opt-scrollzoom.html
new file mode 100644
index 00000000000..6833d22484a
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/config-options/config-opt-scrollzoom.html
@@ -0,0 +1,26 @@
+---
+name: Scroll and Zoom
+language: plotly_js
+suite: configuration
+order: 1
+sitemap: false
+arrangement: horizontal
+---
+// mousewheel or two-finger scroll zooms the plot
+
+var trace1 = {
+ x:['2020-10-04', '2021-11-04', '2023-12-04'],
+ y: [90, 40, 60],
+ type: 'scatter'
+};
+
+var data = [trace1];
+
+var layout = {
+ title: {
+ text: 'Scroll and Zoom'
+ },
+ showlegend: false
+};
+
+Plotly.newPlot('myDiv', data, layout, {scrollZoom: true});
diff --git a/docs/content/plotly_js/fundamentals/config-options/config-opt-showlink.html b/docs/content/plotly_js/fundamentals/config-options/config-opt-showlink.html
new file mode 100644
index 00000000000..b75ab5859c4
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/config-options/config-opt-showlink.html
@@ -0,0 +1,32 @@
+---
+name: Display the `Edit Chart` Link
+language: plotly_js
+suite: configuration
+order: 6
+sitemap: false
+arrangement: horizontal
+markdown_content: |
+ Note: showLink now defaults to false.
+---
+
+var trace1 = {
+ x: [0, 1, 2, 3, 4, 5, 6],
+ y: [1, 9, 4, 7, 5, 2, 4],
+ mode: 'lines+markers',
+ type: 'scatter'
+};
+
+var data = [trace1];
+
+var layout = {
+ title: {
+ text: 'Display the Edit Chart Link'
+ }
+};
+
+var config = {
+ showLink: true,
+ plotlyServerURL: "https://chart-studio.plotly.com"
+};
+
+Plotly.newPlot('myDiv', data, layout, config);
diff --git a/docs/content/plotly_js/fundamentals/config-options/config-opt-static-plot.html b/docs/content/plotly_js/fundamentals/config-options/config-opt-static-plot.html
new file mode 100644
index 00000000000..b47fe67fdab
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/config-options/config-opt-static-plot.html
@@ -0,0 +1,27 @@
+---
+name: Making a Static Chart
+language: plotly_js
+suite: configuration
+order: 3
+sitemap: false
+arrangement: horizontal
+---
+var trace1 = {
+ x: [0, 1, 2, 3, 4, 5, 6],
+ y: [1, 9, 4, 7, 5, 2, 4],
+ mode: 'markers',
+ marker: {
+ size: [20, 40, 25, 10, 60, 90, 30],
+ }
+};
+
+var data = [trace1];
+
+var layout = {
+ title: {
+ text: 'Create a Static Chart'
+ },
+ showlegend: false
+};
+
+Plotly.newPlot('myDiv', data, layout, {staticPlot: true});
diff --git a/docs/content/plotly_js/fundamentals/config-options/config-opt-toImageButtonOptions.html b/docs/content/plotly_js/fundamentals/config-options/config-opt-toImageButtonOptions.html
new file mode 100644
index 00000000000..688279133e9
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/config-options/config-opt-toImageButtonOptions.html
@@ -0,0 +1,37 @@
+---
+name: Customize Download Plot Options
+language: plotly_js
+suite: configuration
+order: 3.1
+sitemap: false
+arrangement: horizontal
+---
+var trace1 = {
+ x: [0, 1, 2, 3, 4, 5, 6],
+ y: [1, 9, 4, 7, 5, 2, 4],
+ mode: 'markers',
+ marker: {
+ size: [20, 40, 25, 10, 60, 90, 30],
+ }
+};
+
+var data = [trace1];
+
+var layout = {
+ title: {
+ text: 'Download Chart as SVG instead of PNG'
+ },
+ showlegend: false
+};
+
+var config = {
+ toImageButtonOptions: {
+ format: 'svg', // one of png, svg, jpeg, webp
+ filename: 'custom_image',
+ height: 500,
+ width: 700,
+ scale: 1 // Multiply title/legend/axis/canvas sizes by this factor
+ }
+};
+
+Plotly.newPlot('myDiv', data, layout, config);
diff --git a/docs/content/plotly_js/fundamentals/config-options/config-showSendToCloud.html b/docs/content/plotly_js/fundamentals/config-options/config-showSendToCloud.html
new file mode 100644
index 00000000000..0a906c6263d
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/config-options/config-showSendToCloud.html
@@ -0,0 +1,26 @@
+---
+name: Display Edit in Chart Studio Modebar Button
+language: plotly_js
+suite: configuration
+order: 7.1
+sitemap: false
+arrangement: horizontal
+---
+var data = [{
+ values: [19, 26, 55],
+ labels: ['Residential', 'Non-Residential', 'Utility'],
+ type: 'pie'
+}];
+
+var layout = {
+ title: {
+ text: 'Show Edit in Chart Studio Modebar Button'
+ }
+};
+
+var config = {
+ showEditInChartStudio: true,
+ plotlyServerURL: "https://chart-studio.plotly.com"
+};
+
+Plotly.newPlot('myDiv', data, layout, config);
diff --git a/docs/content/plotly_js/fundamentals/config-options/config_options_index.html b/docs/content/plotly_js/fundamentals/config-options/config_options_index.html
new file mode 100644
index 00000000000..ecd0697852c
--- /dev/null
+++ b/docs/content/plotly_js/fundamentals/config-options/config_options_index.html
@@ -0,0 +1,26 @@
+---
+description: How to set the configuration options for figures in JavaScript.
+display_as: file_settings
+language: plotly_js
+layout: base
+name: Configuration Options
+order: 1
+page_type: example_index
+permalink: javascript/configuration-options/
+thumbnail: thumbnail/modebar-icons.png
+---
+
+
+
+The plotly.js config argument sets properties like the mode bar buttons and the interactivity in the chart.
+It's the last argument in Plotly.newPlot calls.
++ Please read the full Plotly.js End User License Agreement before using, downloading, or purchasing the software. +
+ +{{page.description}}
+ {% include layouts/dashplug.html %} +With the release of Plotly.js v2.35.0, we are introducing a new set of trace types for maps with tile underlays:
+ +These traces replace the existing Mapbox traces, Choroplethmapbox, Scattermapbox,
+ Densitymapbox, but use MapLibre as the map renderer rather than
+ Mapbox.
+
When switching to the new traces, keep an eye out for improved rendering performance, WebGL2 support, and over time, + improved features in the Plotly map traces inherited from the MapLibre renderer, including projection support, globe + views, terrain support, and support for modern mapping standards.
+ +You can learn more about the motivations for this change in our announcement + post.
+ +As a result of removing Mapbox as the rendering engine, we're also removing the Mapbox branding from these trace + names. + This means that migrating from Mapbox traces to MapLibre traces will require some code changes in your projects.
+ +*mapbox to *map. For any existing trace name ending in
+ *mapbox,
+ ensure you've removed the "box" suffix.
+ layout.mapbox argument in your layout configuration to layout.map.
+ The nested properties are identical in the new map traces, so no other changes should be required.mapbox_style to map_style.map_style settings. With mapbox traces, we bundle basic,
+ streets,
+ outdoors, light, dark, satellite, and
+ satellite-streets styles,
+ using Mapbox styling. These style names are still available, but they now reference slightly different styles
+ provided by other tools.
+ Note that Mapbox API keys are no longer required for Plotly-provided styles, but using external styles in your Plotly + maps remains supported with the existing API.
\ No newline at end of file diff --git a/docs/content/plotly_js/maps/plotly_js-map-index.html b/docs/content/plotly_js/maps/plotly_js-map-index.html new file mode 100644 index 00000000000..377ee3ea7aa --- /dev/null +++ b/docs/content/plotly_js/maps/plotly_js-map-index.html @@ -0,0 +1,27 @@ +--- +permalink: javascript/maps/ +description: Plotly.js makes interactive, publication-quality graphs online. Examples of how to make maps. +name: Maps +layout: langindex +language: plotly_js +display_as: maps +thumbnail: thumbnail/mixed.jpg +--- + + +{{page.description}}
+ {% include layouts/dashplug.html %} +
+ Built on top of d3.js and stack.gl, Plotly.js is a high-level, declarative charting library. plotly.js ships with over 40 chart types, including 3D charts, statistical graphs, and SVG maps.
+
plotly.js is free and open source and you can view the source, report issues or contribute on GitHub.
+
plotly.js abstracts the types of statistical and scientific charts that you would find in packages like matplotlib, ggplot2, or MATLAB.
+ d3.json('https://plotly.com/~DanielCarrera/13.json', function(figure){
+ var trace = {
+ x: figure.data[0].x, y: figure.data[0].y, z: figure.data[0].z,
+ type: 'contour', autocolorscale: false,
+ colorscale: [[0,"rgb( 0, 0, 0)"],[0.3,"rgb(230, 0, 0)"],[0.6,"rgb(255,210, 0)"],[1,"rgb(255,255,255)"]],
+ reversescale: true, zmax: 2.5, zmin: -2.5
+ };
+ var layout = {
+ title: {
+ text: 'turbulence simulation'
+ },
+ xaxis: {
+ title: {
+ text: 'radial direction'
+ },
+ showline: true,
+ mirror: 'allticks',
+ ticks: 'inside'
+ },
+ yaxis: {
+ title: {
+ text: 'vertical direction'
+ },
+ showline: true,
+ mirror: 'allticks',
+ ticks: 'inside'
+ },
+ margin: {l: 40, b: 40, t: 60},
+ annotations: [{
+ showarrow: false,
+ text: 'Credit: Daniel Carrera',
+ x: 0, y: 0, xref: 'paper', yref: 'paper'
+ }]
+ }
+ Plotly.newPlot(document.getElementById('contour-plot'), [trace], layout, {showLink: false});
+ });
+
+
+
+ plotly.js charts are described declaratively as JSON objects. Every aspect of the charts, such as colors, grid lines, and the legend, has a corresponding set of JSON attributes.
+
+ d3.csv('https://raw.githubusercontent.com/plotly/datasets/master/wind_speed_laurel_nebraska.csv', function(rows){
+ var trace = {
+ type: 'scatter', // set the chart type
+ mode: 'lines', // connect points with lines
+ x: rows.map(function(row){ // set the x-data
+ return row['Time'];
+ }),
+ y: rows.map(function(row){ // set the x-data
+ return row['10 Min Sampled Avg'];
+ }),
+ line: { // set the width of the line.
+ width: 1
+ },
+ error_y: {
+ array: rows.map(function(row){ // set the height of the error bars
+ return row['10 Min Std Dev'];
+ }),
+ thickness: 0.5, // set the thickness of the error bars
+ width: 0
+ }
+ };
+
+ var layout = {
+ yaxis: {
+ title: {
+ text: "Wind Speed"
+ }
+ }, // set the y axis title
+ xaxis: {
+ showgrid: false, // remove the x-axis grid lines
+ tickformat: "%B, %Y" // customize the date format to "month, day"
+ },
+ margin: { // update the left, bottom, right, top margin
+ l: 40, b: 10, r: 10, t: 20
+ }
+ };
+
+ Plotly.newPlot(document.getElementById('wind-speed'), [trace], layout, {showLink: false});
+ });
+
+
+
+ plotly.js uses stack.gl for high performance 2D and 3D charting.plotly.js chart type scattergl. scattergl charts render an order of magnitude faster than their SVG counterparts.
+
+ plotly.js are rendered with WebGL, leveraging the power of the GPU for fast interactivity.
+ view the interactive version
+ graphDiv<div> element on the page, commonly referred to as graphDiv or plotDiv. The first argument to each function on this page is a reference to this element, and it can be either a DOM node, i.e. the output of document.getElementById(), or a string, in which case it will be treated as the id of the div. A note on sizing: You can either supply height and width in the layout object (see below), or give the <div> a height and width in CSS.datadata, whose elements are trace objects of various types (e.g. scatter, bar etc) as documented in the Full Reference.
+ layoutlayout, as documented in/ the Full Reference.
+ configconfig, as documented here. The difference between config and layout is that layout relates to the content of the plot, whereas config relates to the context in which the plot is being shown.
+ framesframes as per the example here.
+ They can contain data and layout objects, which define any changes to be animated, and a traces
+ object that defines which traces to animate. Additionally, frames containing name and/or group
+ attributes can be referenced by Plotly.animate
+ after they are added by Plotly.addFrames
+ <div> element, overwriting any existing plot. To update an existing plot in a <div>, it is much more efficient to use Plotly.react than to overwrite it.
+data or layout can always be retrieved from the <div> element in which the plot was drawn:
+
+var graphDiv = document.getElementById('id_of_the_div')
+
+var data = [{
+ x: [1999, 2000, 2001, 2002],
+ y: [10, 15, 13, 17],
+ type: 'scatter'
+}];
+
+var layout = {
+ title: {
+ text: 'Sales Growth'
+ },
+ xaxis: {
+ title: {
+ text: 'Year'
+ },
+ showgrid: false,
+ zeroline: false
+ },
+ yaxis: {
+ title: {
+ text: 'Percent'
+ },
+ showline: false
+ }
+};
+Plotly.newPlot(graphDiv, data, layout);
+
+...
+var dataRetrievedLater = graphDiv.data;
+var layoutRetrievedLater = graphDiv.layout;
+
+
+
+Plotly.react has the same signature as Plotly.newPlot above, and can be used in its place to create a plot, but when called again on the same <div> will update it far more efficiently than Plotly.newPlot, which would destroy and recreate the plot. Plotly.react is as fast as Plotly.restyle/Plotly.relayout documented below.
+data such as x or marker.color etc, these items must either have been added immutably (i.e. the identity of the parent array must have changed) or the value of layout.datarevision must have changed.
+
+Plotly.react and is faster than redrawing the whole plot with Plotly.newPlot.data array in an existing plot. When restyling, you may choose to have the specified changes affect as many traces as desired. The update is given as a single object and the traces that are affected are given as a list of traces indices. Note, leaving the trace indices unspecified assumes that you want to restyle all the traces.
+
+
+// restyle a single trace using attribute strings
+var update = {
+ opacity: 0.4,
+ 'marker.color': 'red'
+};
+Plotly.restyle(graphDiv, update, 0);
+
+// restyle all traces using attribute strings
+var update = {
+ opacity: 0.4,
+ 'marker.color': 'red'
+};
+Plotly.restyle(graphDiv, update);
+
+// restyle two traces using attribute strings
+var update = {
+ opacity: 0.4,
+ 'marker.color': 'red'
+};
+Plotly.restyle(graphDiv, update, [1, 2]);
+
+
+See the Pen Plotly.restyle by plotly (@plotly) on CodePen.
+ + +
+// restyle the first trace's marker color 'red' and the second's 'green'
+var update = {
+ 'marker.color': ['red', 'green']
+};
+Plotly.restyle(graphDiv, update, [0, 1])
+
+// alternate between red and green for all traces (note omission of traces)
+var update = {
+ 'marker.color': ['red', 'green']
+};
+Plotly.restyle(graphDiv, update)
+
+
+See the Pen Plotly.restyle Traces in Turn by plotly (@plotly) on CodePen.
+ +
+// update the color attribute of the first trace so that the markers within the same trace
+// have different colors
+var update = {
+ 'marker.color': [['red', 'green']]
+}
+Plotly.restyle(graphDiv, update, [0])
+
+// update two traces with new z data
+var update = {z: [[[1,2,3], [2,1,2], [1,1,1]], [[0,1,1], [0,2,1], [3,2,1]]]};
+Plotly.restyle(graphDiv, update, [1, 2])
+
+
+See the Pen Plotly.restyle Arrays by plotly (@plotly) on CodePen.
+ +{marker: {color: 'red'}} vs. {'marker.color': red}). When you pass an attribute string to restyle inside the update object, it’s assumed to mean update only this attribute. Therefore, if you wish to replace and entire sub-object, you may simply specify one less level of nesting.
+
+
+// replace the entire marker object with the one provided
+var update = {
+ marker: {color: 'red'}
+};
+Plotly.restyle(graphDiv, update, [0])
+
+
+See the Pen Plotly.restyle Attribute strings by plotly (@plotly) on CodePen.
+ +
+// Set the first trace's line to red, the second to the default, and ignore the third
+Plotly.restyle(graphDiv, {
+ 'line.color': ['red', null, undefined]
+}, [0, 1, 2])
+
+
+See the Pen null vs. undefined in Plotly.restyle by plotly (@plotly) on CodePen.
+ + +Plotly.react and is faster than redrawing the whole plot with Plotly.newPlot.layout object of an existing plot. The call signature and arguments for relayout are similar (but simpler) to restyle. Because there are no indices to deal with, arrays need not be wrapped. Also, no argument specifying applicable trace indices is passed in.
+
+
+// update only values within nested objects
+var update = {
+ title: {text: 'some new title'}, // updates the title
+ 'xaxis.range': [0, 5], // updates the xaxis range
+ 'yaxis.range[1]': 15 // updates the end of the yaxis range
+};
+Plotly.relayout(graphDiv, update)
+
+
+See the Pen Plotly.relayout by plotly (@plotly) on CodePen.
+ + +Plotly.react and is faster than redrawing the whole plot with Plotly.newPlot.data array and layout object in an existing plot, basically a combination of Plotly.restyle and Plotly.relayout.
+
+//update the layout and all the traces
+var layout_update = {
+ title: {text: 'some new title'}, // updates the title
+};
+var data_update = {
+ 'marker.color': 'red'
+};
+Plotly.update(graphDiv, data_update, layout_update)
+
+//update the layout and a single trace
+var layout_update = {
+ title: {text: 'some new title'}, // updates the title
+};
+var data_update = {
+ 'marker.color': 'red'
+};
+Plotly.update(graphDiv, data_update, layout_update,0)
+
+//update the layout and two specific traces
+var layout_update = {
+ title: {text: 'some new title'}, // updates the title
+};
+var data_update = {
+ 'marker.color': 'red'
+};
+Plotly.update(graphDiv, data_update, layout_update, [0,2])
+
+
+
+
+See the Pen Plotly.update by plotly (@plotly) on CodePen.
+ + +Plotly.validate allows users to validate their input data array and layout object. This can be done on the data array and layout object passed into Plotly.newPlot or on an updated graphDiv with Plotly.validate(graphDiv.data, graphDiv.layout).
+
+var data = [{
+ type: 'bar',
+ y: [2, 1, 3, 2],
+ orientation: 'horizontal'
+}];
+
+var out = Plotly.validate(data, layout);
+console.log(out[0].msg)
+// "In data trace 0, key orientation is set to an invalid value (horizontal)"
+
+
+Plotly.makeTemplate copies the style information from a figure. It does this by returning a template object which can be passed to the layout.template attribute of another figure.
+
+var figure = {
+ data: [{
+ type: 'bar',
+ marker: {color: 'red'},
+ y: [2, 1, 3, 2],
+ }],
+ layout:{
+ title: {
+ text: 'Quarterly Earnings'
+ }
+ }
+};
+
+var template = Plotly.makeTemplate(figure);
+
+var newData = [{
+ type:'bar',
+ y:[3,2,5,8]
+}]
+
+var layout = {template:template}
+
+Plotly.newPlot(graphDiv,newData,layout)
+
+
+
+Plotly.validateTemplate allows users to Test for consistency between the given figure and a template,
+either already included in the figure or given separately. Note that not every issue identified here is necessarily
+a problem, it depends on what you're using the template for.
+
+var out = Plotly.validateTemplate(figure, template);
+console.log(out[0].msg)
+// "The template has 1 traces of type bar but there are none in the data."
+
+
+Plotly.react and is faster than redrawing the whole plot with Plotly.newPlot.graphDiv at any location in its data array. Every graphDiv object has a data component which is an array of JSON blobs that each describe one trace. The full list of trace types can be found in the Full Reference.
+
+
+
+// add a single trace to an existing graphDiv
+Plotly.addTraces(graphDiv, {y: [2,1,2]});
+
+// add two traces
+Plotly.addTraces(graphDiv, [{y: [2,1,2]}, {y: [4, 5, 7]}]);
+
+// add a trace at the beginning of the data array
+Plotly.addTraces(graphDiv, {y: [1, 5, 7]}, 0);
+
+
+See the Pen Plotly.addtraces by plotly (@plotly) on CodePen.
+ + +Plotly.react and is faster than redrawing the whole plot with Plotly.newPlot.graphDiv by specifying the indices of the traces to be removed.
+
+
+// remove the first trace
+Plotly.deleteTraces(graphDiv, 0);
+
+// remove the last two traces
+Plotly.deleteTraces(graphDiv, [-2, -1]);
+
+
+See the Pen Plotly.deleteTraces by plotly (@plotly) on CodePen.
+ + +Plotly.react and is faster than redrawing the whole plot with Plotly.newPlot.graphDiv. This will change the ordering of the layering and the legend.
+
+All traces defined in graphDiv are ordered in an array. They are drawn one by one from first to last. Each time a new layer or trace is drawn to the canvas the new trace is drawn directly over the current canvas, replacing the colors of the traces and background. This algorithm to image stacking/drawing is known as the Painter's Algorithm. As its name implies the Painter's Algorithm is typically the manner in which a painter paints a landscape, starting from objects with the most perspective depth and progressively moving forward and layering over the background objects.
+
+
+// move the first trace (at index 0) the the end of the data array
+Plotly.moveTraces(graphDiv, 0);
+
+// move selected traces (at indices [0, 3, 5]) to the end of the data array
+Plotly.moveTraces(graphDiv, [0, 3, 5]);
+
+// move last trace (at index -1) to the beginning of the data array (index 0)
+Plotly.moveTraces(graphDiv, -1, 0);
+
+// move selected traces (at indices [1, 4, 5]) to new indices [0, 3, 2]
+Plotly.moveTraces(graphDiv, [1, 4, 5], [0, 3, 2]);
+
+
+See the Pen Plotly.moveTraces by plotly (@plotly) on CodePen.
+ + +Plotly.react and is faster than redrawing the whole plot with Plotly.newPlot.graphDiv.
+
+
+// extend one trace
+Plotly.extendTraces(graphDiv, {y: [[rand()]]}, [0])
+
+// extend multiple traces
+Plotly.extendTraces(graphDiv, {y: [[rand()], [rand()]]}, [0, 1])
+
+// extend multiple traces up to a maximum of 10 points per trace
+Plotly.extendTraces(graphDiv, {y: [[rand()], [rand()]]}, [0, 1], 10)
+
+
+See the Pen Plotly.extendTraces by plotly (@plotly) on CodePen.
+ + +Plotly.react and is faster than redrawing the whole plot with Plotly.newPlot.graphDiv.
+
+
+// prepend one trace
+Plotly.prependTraces(graphDiv, {y: [[rand()]]}, [0])
+
+// prepend multiple traces
+Plotly.prependTraces(graphDiv, {y: [[rand()], [rand()]]}, [0, 1])
+
+// prepend multiple traces up to a maximum of 10 points per trace
+Plotly.prependTraces(graphDiv, {y: [[rand()], [rand()]]}, [0, 1], 10)
+
+
+Plotly.react and is faster than redrawing the whole plot with Plotly.newPlot.graphDiv. The group or name attribute of a frame can
+be used by Plotly.animate in place of a frame object (or array of
+frame objects).
+See example here.
+
+Plotly.animate.
+
+
+Plotly.newPlot('graph', [{
+ x: [1, 2, 3],
+ y: [0, 0.5, 1],
+ line: {simplify: false},
+}]);
+
+function randomize() {
+ Plotly.animate('graph', {
+ data: [{y: [Math.random(), Math.random(), Math.random()]}],
+ traces: [0],
+ layout: {}
+ }, {
+ transition: {
+ duration: 500,
+ easing: 'cubic-in-out'
+ },
+ frame: {
+ duration: 500
+ }
+ })
+}
+
+
+See the Pen Plotly.animate by plotly (@plotly) on CodePen.
+ + + +purge will clear the div, and remove any Plotly plots that have been placed in it.
+
+// purge will be used on the div that you wish clear of Plotly plots
+Plotly.purge(graphDiv);
+
+
+See the Pen Plotly.purge by plotly (@plotly) on CodePen.
+ + +toImage will generate a promise to an image of the plot in data URL format.
+
+// Plotly.toImage will turn the plot in the given div into a data URL string
+// toImage takes the div as the first argument and an object specifying image properties as the other
+Plotly.toImage(graphDiv, {format: 'png', width: 800, height: 600}).then(function(dataUrl) {
+ // use the dataUrl
+})
+
+
+See the Pen Plotly.toImage by plotly (@plotly) on CodePen.
+ + +downloadImage will trigger a request to download the image of a Plotly plot.
+
+// downloadImage will accept the div as the first argument and an object specifying image properties as the other
+Plotly.downloadImage(graphDiv, {format: 'png', width: 800, height: 600, filename: 'newplot'});
+
+
+See the Pen Plotly.toImage by plotly (@plotly) on CodePen.
+ + +plotly_ when clicked or hovered over, and event handlers can be bound to events using the on method that is exposed by the plot div object. For more information and examples of how to use Plotly events see: https://plotly.com/javascript/plotlyjs-events/.
diff --git a/docs/content/plotly_js/plotlyjs-getting-started.html b/docs/content/plotly_js/plotlyjs-getting-started.html
new file mode 100644
index 00000000000..8792041a2fe
--- /dev/null
+++ b/docs/content/plotly_js/plotlyjs-getting-started.html
@@ -0,0 +1,105 @@
+---
+name: Getting Started
+permalink: javascript/getting-started/
+description: Getting Started with plotly
+layout: base
+language: plotly_js
+redirect_from: javascript-graphing-library/getting-started/
+---
+
+
+
+ You can install Plotly.js from NPM via npm install plotly.js-dist or yarn add plotly.js-dist
+
+ You can also use the ultrafast plotly.js CDN link. This CDN is graciously provided by the incredible team at Fastly. +
+ +<head>
+ <script src="https://cdn.plot.ly/plotly-{{site.data.jsversion.version}}.min.js" charset="utf-8"></script>
+</head>
+
+ + Download the minified plotly.js source code and dependencies. +
+ ++ Include the downloaded scripts before the end of the </head> tag in your HTML document: +
+ +<head>
+ <script src="plotly-{{site.data.jsversion.version}}.min.js" charset="utf-8"></script>
+</head>
+
+
+ + In your HTML document, create an empty DIV to draw the graph in: +
+ +<div id="tester" style="width:600px;height:250px;"></div>
+
+
+ Now you can make interactive plotly.js charts using Plotly.newPlot().
+
<script>
+ TESTER = document.getElementById('tester');
+ Plotly.newPlot( TESTER, [{
+ x: [1, 2, 3, 4, 5],
+ y: [1, 2, 4, 8, 16] }], {
+ margin: { t: 0 } } );
+</script>
+
+
+ Now you can pass Plotly.newPlot() either the ID of the DIV ("tester") or the DIV DOM element (TESTER).
+
+
+ {{page.description}}
+ {% include layouts/dashplug.html %} +{{page.description}}
+ {% include layouts/dashplug.html %} +{{page.description}}
+ {% include layouts/dashplug.html %} +layout.annotationsbar Tracesbarpolar Tracesbox Tracescandlestick Tracescarpet Traceschoropleth Traceschoroplethmap Traceschoroplethmapbox Traceslayout.coloraxiscone Tracescontour Tracescontourcarpet Tracesdensitymap Tracesdensitymapbox Tracesfunnel Tracesfunnelarea Traceslayout.geolayoutheatmap Traceshistogram Traceshistogram2d Traceshistogram2dcontour Tracesicicle Tracesimage Traceslayout.imagesindicator Tracesisosurface Traceslayout.mapboxmesh3d Tracesohlc Tracesparcats Tracesparcoords Tracespie Traceslayout.polarsankey Tracesscatter Tracesscatter3d Tracesscattercarpet Tracesscattergeo Tracesscattergl Tracesscattermap Tracesscattermapbox Tracesscatterpolar Tracesscatterpolargl Tracesscattersmith Tracesscatterternary Traceslayout.scenelayout.selectionslayout.shapeslayout.sliderslayout.smithsplom Tracesstreamtube Tracessunburst Tracessurface Tracestable Traceslayout.ternarytreemap Traceslayout.updatemenusviolin Tracesvolume Traceswaterfall Traceslayout.xaxislayout.yaxisThe pages linked in the sidebar together form the exhaustive reference for all of the attributes in the core figure data structure
+that the plotly library operates on. They are automatically-generated from the
+ machine-readable Plotly.js schema reference.
+ plotly.js charts are described declaratively as JSON objects. Every aspect of a plotly chart (the colors, the grids, the data, and so on) has a corresponding JSON attribute. This page contains an extensive list of these attributes.
+
+ Plotly's graph description places attributes into two categories: traces (objects that describe a single series of data in a graph) and layout (attributes that apply to the rest of the chart, like the title, xaxis, or annotations). Traces are categorized by chart type (e.g. scatter, heatmap).
+
+ Here is a simple example of a plotly chart inlined with links to each attribute's reference section.
+
+
+ data = [
+ {
+ type: 'scatter', // all "scatter" attributes: https://plotly.com/javascript/reference/#scatter
+ x: [1, 2, 3], // more about "x": #scatter-x
+ y: [3, 1, 6], // #scatter-y
+ marker: { // marker is an object, valid marker keys: #scatter-marker
+ color: 'rgb(16, 32, 77)' // more about "marker.color": #scatter-marker-color
+ }
+ },
+ {
+ type: 'bar', // all "bar" chart attributes: #bar
+ x: [1, 2, 3], // more about "x": #bar-x
+ y: [3, 1, 6], // #bar-y
+ name: 'bar chart example' // #bar-name
+ }
+ ];
+
+ layout = { // all "layout" attributes: #layout
+ title: 'simple example', // more about "layout.title": #layout-title
+ xaxis: { // all "layout.xaxis" attributes: #layout-xaxis
+ title: 'time' // more about "layout.xaxis.title": #layout-xaxis-title
+ },
+ annotations: [ // all "annotation" attributes: #layout-annotations
+ {
+ text: 'simple annotation', // #layout-annotations-text
+ x: 0, // #layout-annotations-x
+ xref: 'paper', // #layout-annotations-xref
+ y: 0, // #layout-annotations-y
+ yref: 'paper' // #layout-annotations-yref
+ }
+ ]
+ }
+
+
+ plotly.js charts are described declaratively as JSON objects. Every aspect of a plotly chart (the colors, the grids, the data, and so on) has a corresponding JSON attribute. This page contains an extensive list of these attributes.
+
+ Plotly's graph description places attributes into two categories: traces (objects that describe a single series of data in a graph) and layout (attributes that apply to the rest of the chart, like the title, xaxis, or annotations). Traces are categorized by chart type (e.g. scatter, heatmap).
+
+ Here is a simple example of a plotly chart inlined with links to each attribute's reference section.
+
+
+ data = [
+ {
+ type: 'scatter', // all "scatter" attributes: https://plotly.com/javascript/reference/#scatter
+ x: [1, 2, 3], // more about "x": #scatter-x
+ y: [3, 1, 6], // #scatter-y
+ marker: { // marker is an object, valid marker keys: #scatter-marker
+ color: 'rgb(16, 32, 77)' // more about "marker.color": #scatter-marker-color
+ }
+ },
+ {
+ type: 'bar', // all "bar" chart attributes: #bar
+ x: [1, 2, 3], // more about "x": #bar-x
+ y: [3, 1, 6], // #bar-y
+ name: 'bar chart example' // #bar-name
+ }
+ ];
+
+ layout = { // all "layout" attributes: #layout
+ title: 'simple example', // more about "layout.title": #layout-title
+ xaxis: { // all "layout.xaxis" attributes: #layout-xaxis
+ title: 'time' // more about "layout.xaxis.title": #layout-xaxis-title
+ },
+ annotations: [ // all "annotation" attributes: #layout-annotations
+ {
+ text: 'simple annotation', // #layout-annotations-text
+ x: 0, // #layout-annotations-x
+ xref: 'paper', // #layout-annotations-xref
+ y: 0, // #layout-annotations-y
+ yref: 'paper' // #layout-annotations-yref
+ }
+ ]
+ }
+
+ The pages linked in the sidebar together form the exhaustive reference for all of the attributes in the core figure data structure
+that the plotly library operates on. They are automatically-generated from the
+ machine-readable Plotly.js schema reference.
Figures are represented as trees with named nodes called "attributes".
+The root node of the tree has three top-level attributes: data, layout and frames.
+Attributes are referred to in text and in this reference by their full "path" i.e. the dot-delimited concatenation of their parents.
+For example "layout.width" refers to the attribute whose key is "width" inside a dict which is
+the value associated with a key "layout" at the root of the figure. If one of the parents is a list rather
+than a dict, a set of brackets is inserted in the path when referring to the attribute in the abstract,
+e.g. "layout.annotations[].text". Finally, as explained below, the top-level "data"
+attribute defines a list of typed objects called "traces" with the schema dependent upon the type,
+and these attributes' paths are listed in this reference as
+"data[type=scatter].name". When manipulating
+a plotly.graph_objects.Figure object, attributes can be set either directly
+using Python object attributes e.g. fig.layout.title.font.family="Open Sans"
+or using update methods
+and "magic underscores" e.g. fig.update_layout(title_font_family="Open Sans")
When building a figure, it is not necessary to populate every attribute
+of every object. At render-time, the JavaScript layer will compute default values
+for each required unspecified attribute, depending upon the ones that are specified,
+as documented in this page. An example of this would be layout.xaxis.range,
+which may be specified explicitly, but if not will be computed based on the range of x values for
+every trace linked to that axis. The JavaScript layer will ignore unknown attributes
+or malformed values, although the plotly.graph_objects module provides
+Python-side validation for attribute values. Note also that if the layout.template
+key is present (as it is by default) then default values will be drawn first from the contents
+of the template and only if missing from there will the JavaScript layer infer further defaults.
+The built-in template can be disabled by setting layout.template="none".
This page is the exhaustive reference for all of the attributes in the core figure data structure
+that the plotly library operates on. It is automatically-generated from the
+ machine-readable Plotly.js schema reference.
Figures are represented as trees with named nodes called "attributes".
+The root node of the tree has three top-level attributes: data, layout and frames.
+Attributes are referred to in text and in this page by their full "path" i.e. the dot-delimited concatenation of their parents.
+For example "layout.width" refers to the attribute whose key is "width" inside a dict which is
+the value associated with a key "layout" at the root of the figure. If one of the parents is a list rather
+than a dict, a set of brackets is inserted in the path when referring to the attribute in the abstract,
+e.g. "layout.annotations[].text". Finally, as explained below, the top-level "data"
+attribute defines a list of typed objects called "traces" with the schema dependent upon the type,
+and these attributes' paths are listed in this page as
+"data[type=scatter].name". When manipulating
+a plotly.graph_objects.Figure object, attributes can be set either directly
+using Python object attributes e.g. fig.layout.title.font.family="Open Sans"
+or using update methods
+and "magic underscores" e.g. fig.update_layout(title_font_family="Open Sans")
When building a figure, it is not necessary to populate every attribute
+of every object. At render-time, the JavaScript layer will compute default values
+for each required unspecified attribute, depending upon the ones that are specified,
+as documented in this page. An example of this would be layout.xaxis.range,
+which may be specified explicitly, but if not will be computed based on the range of x values for
+every trace linked to that axis. The JavaScript layer will ignore unknown attributes
+or malformed values, although the plotly.graph_objects module provides
+Python-side validation for attribute values. Note also that if the layout.template
+key is present (as it is by default) then default values will be drawn first from the contents
+of the template and only if missing from there will the JavaScript layer infer further defaults.
+The built-in template can be disabled by setting layout.template="none".
layout.annotationsbar Tracesbarpolar Tracesbox Tracescandlestick Tracescarpet Traceschoropleth Traceschoroplethmap Traceschoroplethmapbox Traceslayout.coloraxiscone Tracescontour Tracescontourcarpet Tracesdensitymap Tracesdensitymapbox Tracesfunnel Tracesfunnelarea Traceslayout.geolayoutheatmap Tracesheatmapgl Traceshistogram Traceshistogram2d Traceshistogram2dcontour Tracesicicle Tracesimage Traceslayout.imagesindicator Tracesisosurface Traceslayout.mapboxmesh3d Tracesohlc Tracesparcats Tracesparcoords Tracespie Tracespointcloud Traceslayout.polarsankey Tracesscatter Tracesscatter3d Tracesscattercarpet Tracesscattergeo Tracesscattergl Tracesscattermap Tracesscattermapbox Tracesscatterpolar Tracesscatterpolargl Tracesscattersmith Tracesscatterternary Traceslayout.scenelayout.selectionslayout.shapeslayout.sliderslayout.smithsplom Tracesstreamtube Tracessunburst Tracessurface Tracestable Traceslayout.ternarytreemap Traceslayout.updatemenusviolin Tracesvolume Traceswaterfall Traceslayout.xaxislayout.yaxis
+ You can install Plotly.js from NPM via npm install plotly.js-dist or yarn add plotly.js-dist
+
+ You can also use the ultrafast plotly.js CDN link. This CDN is graciously provided by the incredible team at Fastly. +
+ +<head>
+ <script src="https://cdn.plot.ly/plotly-{{ js_version }}.min.js" charset="utf-8"></script>
+</head>
+
+ + Download the minified plotly.js source code and dependencies. +
+ ++ Include the downloaded scripts before the end of the </head> tag in your HTML document: +
+ +<head>
+ <script src="plotly-{{ js_version }}.min.js" charset="utf-8"></script>
+</head>
+
+
+ + In your HTML document, create an empty DIV to draw the graph in: +
+ +<div id="tester" style="width:600px;height:250px;"></div>
+
+
+ Now you can make interactive plotly.js charts using Plotly.newPlot().
+
<script>
+ TESTER = document.getElementById('tester');
+ Plotly.newPlot( TESTER, [{
+ x: [1, 2, 3, 4, 5],
+ y: [1, 2, 4, 8, 16] }], {
+ margin: { t: 0 } } );
+</script>
+
+
+ Now you can pass Plotly.newPlot() either the ID of the DIV ("tester") or the DIV DOM element (TESTER).
+
+
+ ++Plotly Studio: Transform any dataset into an interactive data application in minutes with AI. Try + Plotly Studio now.
+
+var graphDiv = document.getElementById('id_of_the_div')
+
+var data = [{
+ x: [1999, 2000, 2001, 2002],
+ y: [10, 15, 13, 17],
+ type: 'scatter'
+}];
+
+var layout = {
+ title: {
+ text: 'Sales Growth'
+ },
+ xaxis: {
+ title: {
+ text: 'Year'
+ },
+ showgrid: false,
+ zeroline: false
+ },
+ yaxis: {
+ title: {
+ text: 'Percent'
+ },
+ showline: false
+ }
+};
+Plotly.newPlot(graphDiv, data, layout);
+
+...
+var dataRetrievedLater = graphDiv.data;
+var layoutRetrievedLater = graphDiv.layout;
+
+
+
+### Plotly.react
+
+`Plotly.react` has the same signature as [`Plotly.newPlot`](#plotlynewplot) above, and can be used in its place to create a plot, but when called again on the same `
+// restyle a single trace using attribute strings
+var update = {
+ opacity: 0.4,
+ 'marker.color': 'red'
+};
+Plotly.restyle(graphDiv, update, 0);
+
+// restyle all traces using attribute strings
+var update = {
+ opacity: 0.4,
+ 'marker.color': 'red'
+};
+Plotly.restyle(graphDiv, update);
+
+// restyle two traces using attribute strings
+var update = {
+ opacity: 0.4,
+ 'marker.color': 'red'
+};
+Plotly.restyle(graphDiv, update, [1, 2]);
+
+
+See the Pen Plotly.restyle by plotly (@plotly) on CodePen.
+ + +
+// restyle the first trace's marker color 'red' and the second's 'green'
+var update = {
+ 'marker.color': ['red', 'green']
+};
+Plotly.restyle(graphDiv, update, [0, 1])
+
+// alternate between red and green for all traces (note omission of traces)
+var update = {
+ 'marker.color': ['red', 'green']
+};
+Plotly.restyle(graphDiv, update)
+
+
+See the Pen Plotly.restyle Traces in Turn by plotly (@plotly) on CodePen.
+ +
+// update the color attribute of the first trace so that the markers within the same trace
+// have different colors
+var update = {
+ 'marker.color': [['red', 'green']]
+}
+Plotly.restyle(graphDiv, update, [0])
+
+// update two traces with new z data
+var update = {z: [[[1,2,3], [2,1,2], [1,1,1]], [[0,1,1], [0,2,1], [3,2,1]]]};
+Plotly.restyle(graphDiv, update, [1, 2])
+
+
+See the Pen Plotly.restyle Arrays by plotly (@plotly) on CodePen.
+ +{marker: {color: 'red'}} vs. {'marker.color': red}). When you pass an attribute string to restyle inside the update object, it’s assumed to mean update only this attribute. Therefore, if you wish to replace and entire sub-object, you may simply specify one less level of nesting.
+
+
+// replace the entire marker object with the one provided
+var update = {
+ marker: {color: 'red'}
+};
+Plotly.restyle(graphDiv, update, [0])
+
+
+See the Pen Plotly.restyle Attribute strings by plotly (@plotly) on CodePen.
+ +
+// Set the first trace's line to red, the second to the default, and ignore the third
+Plotly.restyle(graphDiv, {
+ 'line.color': ['red', null, undefined]
+}, [0, 1, 2])
+
+
+See the Pen null vs. undefined in Plotly.restyle by plotly (@plotly) on CodePen.
+ + +### Plotly.relayout + +*This function has comparable performance to [`Plotly.react`](#plotlyreact) and is faster than redrawing the whole plot with [`Plotly.newPlot`](#plotlynewplot).* + +An efficient means of updating the `layout` object of an existing plot. The call signature and arguments for relayout are similar (but simpler) to restyle. Because there are no indices to deal with, arrays need not be wrapped. Also, no argument specifying applicable trace indices is passed in. + +
+// update only values within nested objects
+var update = {
+ title: {text: 'some new title'}, // updates the title
+ 'xaxis.range': [0, 5], // updates the xaxis range
+ 'yaxis.range[1]': 15 // updates the end of the yaxis range
+};
+Plotly.relayout(graphDiv, update)
+
+
+See the Pen Plotly.relayout by plotly (@plotly) on CodePen.
+ + +### Plotly.update + +*This function has comparable performance to [`Plotly.react`](#plotlyreact) and is faster than redrawing the whole plot with [`Plotly.newPlot`](#plotlynewplot).* + +An efficient means of updating both the `data` array and `layout` object in an existing plot, basically a combination of `Plotly.restyle` and `Plotly.relayout`. + +
+//update the layout and all the traces
+var layout_update = {
+ title: {text: 'some new title'}, // updates the title
+};
+var data_update = {
+ 'marker.color': 'red'
+};
+Plotly.update(graphDiv, data_update, layout_update)
+
+//update the layout and a single trace
+var layout_update = {
+ title: {text: 'some new title'}, // updates the title
+};
+var data_update = {
+ 'marker.color': 'red'
+};
+Plotly.update(graphDiv, data_update, layout_update,0)
+
+//update the layout and two specific traces
+var layout_update = {
+ title: {text: 'some new title'}, // updates the title
+};
+var data_update = {
+ 'marker.color': 'red'
+};
+Plotly.update(graphDiv, data_update, layout_update, [0,2])
+
+
+
+
+See the Pen Plotly.update by plotly (@plotly) on CodePen.
+ + +### Plotly.validate + +`Plotly.validate` allows users to validate their input `data` array and `layout` object. This can be done on the `data` array and `layout` object passed into `Plotly.newPlot` or on an updated `graphDiv` with `Plotly.validate(graphDiv.data, graphDiv.layout)`. + +
+var data = [{
+ type: 'bar',
+ y: [2, 1, 3, 2],
+ orientation: 'horizontal'
+}];
+
+var out = Plotly.validate(data, layout);
+console.log(out[0].msg)
+// "In data trace 0, key orientation is set to an invalid value (horizontal)"
+
+
+### Plotly.makeTemplate
+
+`Plotly.makeTemplate` copies the style information from a figure. It does this by returning a `template` object which can be passed to the `layout.template` attribute of another figure.
+
+
+var figure = {
+ data: [{
+ type: 'bar',
+ marker: {color: 'red'},
+ y: [2, 1, 3, 2],
+ }],
+ layout:{
+ title: {
+ text: 'Quarterly Earnings'
+ }
+ }
+};
+
+var template = Plotly.makeTemplate(figure);
+
+var newData = [{
+ type:'bar',
+ y:[3,2,5,8]
+}]
+
+var layout = {template:template}
+
+Plotly.newPlot(graphDiv,newData,layout)
+
+
+
+### Plotly.validateTemplate
+
+`Plotly.validateTemplate` allows users to Test for consistency between the given figure and a template,
+either already included in the figure or given separately. Note that not every issue identified here is necessarily
+a problem, it depends on what you're using the template for.
+
+
+var out = Plotly.validateTemplate(figure, template);
+console.log(out[0].msg)
+// "The template has 1 traces of type bar but there are none in the data."
+
+
+### Plotly.addTraces
+
+*This function has comparable performance to [`Plotly.react`](#plotlyreact) and is faster than redrawing the whole plot with [`Plotly.newPlot`](#plotlynewplot).*
+
+This allows you to add **new** traces to an existing `graphDiv` at any location in its [data array](#retrieving-data-layout). Every `graphDiv` object has a `data` component which is an array of JSON blobs that each describe one trace. The full list of trace types can be found [in the Full Reference](/reference/index.md).
+
+
+// add a single trace to an existing graphDiv
+Plotly.addTraces(graphDiv, {y: [2,1,2]});
+
+// add two traces
+Plotly.addTraces(graphDiv, [{y: [2,1,2]}, {y: [4, 5, 7]}]);
+
+// add a trace at the beginning of the data array
+Plotly.addTraces(graphDiv, {y: [1, 5, 7]}, 0);
+
+
+See the Pen Plotly.addtraces by plotly (@plotly) on CodePen.
+ + +### Plotly.deleteTraces + +*This function has comparable performance to [`Plotly.react`](#plotlyreact) and is faster than redrawing the whole plot with [`Plotly.newPlot`](#plotlynewplot).* + +This allows you to remove traces from an existing `graphDiv` by specifying the indices of the traces to be removed. + +
+// remove the first trace
+Plotly.deleteTraces(graphDiv, 0);
+
+// remove the last two traces
+Plotly.deleteTraces(graphDiv, [-2, -1]);
+
+
+See the Pen Plotly.deleteTraces by plotly (@plotly) on CodePen.
+ + +### Plotly.moveTraces + +*This function has comparable performance to [`Plotly.react`](#plotlyreact) and is faster than redrawing the whole plot with [`Plotly.newPlot`](#plotlynewplot).* + +This allows you to reorder traces in an existing `graphDiv`. This will change the ordering of the layering and the legend. + +All traces defined in `graphDiv` are ordered in an array. They are drawn one by one from first to last. Each time a new layer or trace is drawn to the canvas the new trace is drawn directly over the current canvas, replacing the colors of the traces and background. This algorithm to image stacking/drawing is known as the [Painter's Algorithm](https://www.youtube.com/watch?v=oMgOR3PxmDU). As its name implies the Painter's Algorithm is typically the manner in which a painter paints a landscape, starting from objects with the most perspective depth and progressively moving forward and layering over the background objects. + +
+// move the first trace (at index 0) the the end of the data array
+Plotly.moveTraces(graphDiv, 0);
+
+// move selected traces (at indices [0, 3, 5]) to the end of the data array
+Plotly.moveTraces(graphDiv, [0, 3, 5]);
+
+// move last trace (at index -1) to the beginning of the data array (index 0)
+Plotly.moveTraces(graphDiv, -1, 0);
+
+// move selected traces (at indices [1, 4, 5]) to new indices [0, 3, 2]
+Plotly.moveTraces(graphDiv, [1, 4, 5], [0, 3, 2]);
+
+
+See the Pen Plotly.moveTraces by plotly (@plotly) on CodePen.
+ + +### Plotly.extendTraces + +*This function has comparable performance to [`Plotly.react`](#plotlyreact) and is faster than redrawing the whole plot with [`Plotly.newPlot`](#plotlynewplot).* + +This allows you to add data to traces in an existing `graphDiv`. + +
+// extend one trace
+Plotly.extendTraces(graphDiv, {y: [[rand()]]}, [0])
+
+// extend multiple traces
+Plotly.extendTraces(graphDiv, {y: [[rand()], [rand()]]}, [0, 1])
+
+// extend multiple traces up to a maximum of 10 points per trace
+Plotly.extendTraces(graphDiv, {y: [[rand()], [rand()]]}, [0, 1], 10)
+
+
+See the Pen Plotly.extendTraces by plotly (@plotly) on CodePen.
+ + +### Plotly.prependTraces + +*This function has comparable performance to [`Plotly.react`](#plotlyreact) and is faster than redrawing the whole plot with [`Plotly.newPlot`](#plotlynewplot).* + +This allows you to prepend data to an existing trace `graphDiv`. + +
+// prepend one trace
+Plotly.prependTraces(graphDiv, {y: [[rand()]]}, [0])
+
+// prepend multiple traces
+Plotly.prependTraces(graphDiv, {y: [[rand()], [rand()]]}, [0, 1])
+
+// prepend multiple traces up to a maximum of 10 points per trace
+Plotly.prependTraces(graphDiv, {y: [[rand()], [rand()]]}, [0, 1], 10)
+
+
+### Plotly.addFrames
+
+*This function has comparable performance to [`Plotly.react`](#plotlyreact) and is faster than redrawing the whole plot with [`Plotly.newPlot`](#plotlynewplot).*
+
+This allows you to add animation frames to a `graphDiv`. The `group` or `name` attribute of a frame can be used by [Plotly.animate](#plotlyanimate) in place of a frame object (or array of frame objects). See [example here](gapminder-example.md).
+
+
+### Plotly.animate
+
+Add dynamic behaviour to plotly graphs with `Plotly.animate`.
+
+
+Plotly.newPlot('graph', [{
+ x: [1, 2, 3],
+ y: [0, 0.5, 1],
+ line: {simplify: false},
+}]);
+
+function randomize() {
+ Plotly.animate('graph', {
+ data: [{y: [Math.random(), Math.random(), Math.random()]}],
+ traces: [0],
+ layout: {}
+ }, {
+ transition: {
+ duration: 500,
+ easing: 'cubic-in-out'
+ },
+ frame: {
+ duration: 500
+ }
+ })
+}
+
+
+See the Pen Plotly.animate by plotly (@plotly) on CodePen.
+ + + +### Plotly.purge + +Using `purge` will clear the div, and remove any Plotly plots that have been placed in it. + +
+// purge will be used on the div that you wish clear of Plotly plots
+Plotly.purge(graphDiv);
+
+
+See the Pen Plotly.purge by plotly (@plotly) on CodePen.
+ + +### Plotly.toImage + +`toImage` will generate a promise to an image of the plot in data URL format. + +
+// Plotly.toImage will turn the plot in the given div into a data URL string
+// toImage takes the div as the first argument and an object specifying image properties as the other
+Plotly.toImage(graphDiv, {format: 'png', width: 800, height: 600}).then(function(dataUrl) {
+ // use the dataUrl
+})
+
+
+See the Pen Plotly.toImage by plotly (@plotly) on CodePen.
+ + +### Plotly.downloadImage + +`downloadImage` will trigger a request to download the image of a Plotly plot. + +
+// downloadImage will accept the div as the first argument and an object specifying image properties as the other
+Plotly.downloadImage(graphDiv, {format: 'png', width: 800, height: 600, filename: 'newplot'});
+
+
+See the Pen Plotly.toImage by plotly (@plotly) on CodePen.
+ + +### Using events + +Plots emit events prefixed withplotly_ when clicked or hovered over, and event handlers can be bound to events using the on method that is exposed by the plot div object. For more information and examples of how to use Plotly events see: [https://plotly.com/javascript/plotlyjs-events/](plotlyjs-events.md).
diff --git a/docs/pages/polar-chart.md b/docs/pages/polar-chart.md
new file mode 100644
index 00000000000..35c2f2bb303
--- /dev/null
+++ b/docs/pages/polar-chart.md
@@ -0,0 +1,2 @@
+# polar-chart
+--8<-- "javascript/polar-chart/index.html"
diff --git a/docs/pages/radar-chart.md b/docs/pages/radar-chart.md
new file mode 100644
index 00000000000..feb3c0e40b8
--- /dev/null
+++ b/docs/pages/radar-chart.md
@@ -0,0 +1,2 @@
+# radar-chart
+--8<-- "javascript/radar-chart/index.html"
diff --git a/docs/pages/range-slider.md b/docs/pages/range-slider.md
new file mode 100644
index 00000000000..312404f508e
--- /dev/null
+++ b/docs/pages/range-slider.md
@@ -0,0 +1,2 @@
+# range-slider
+--8<-- "javascript/range-slider/index.html"
diff --git a/docs/pages/react.md b/docs/pages/react.md
new file mode 100644
index 00000000000..5892d8bdd3a
--- /dev/null
+++ b/docs/pages/react.md
@@ -0,0 +1,2 @@
+# react
+--8<-- "javascript/react/index.html"
diff --git a/docs/pages/reference/bar.md b/docs/pages/reference/bar.md
new file mode 100644
index 00000000000..c96c3b54249
--- /dev/null
+++ b/docs/pages/reference/bar.md
@@ -0,0 +1,2 @@
+# bar
+--8<-- "reference/bar/index.html"
diff --git a/docs/pages/reference/barpolar.md b/docs/pages/reference/barpolar.md
new file mode 100644
index 00000000000..0a5ae637b54
--- /dev/null
+++ b/docs/pages/reference/barpolar.md
@@ -0,0 +1,2 @@
+# barpolar
+--8<-- "reference/barpolar/index.html"
diff --git a/docs/pages/reference/box.md b/docs/pages/reference/box.md
new file mode 100644
index 00000000000..fbbcacb6eb1
--- /dev/null
+++ b/docs/pages/reference/box.md
@@ -0,0 +1,2 @@
+# box
+--8<-- "reference/box/index.html"
diff --git a/docs/pages/reference/candlestick.md b/docs/pages/reference/candlestick.md
new file mode 100644
index 00000000000..532a27941c1
--- /dev/null
+++ b/docs/pages/reference/candlestick.md
@@ -0,0 +1,2 @@
+# candlestick
+--8<-- "reference/candlestick/index.html"
diff --git a/docs/pages/reference/carpet.md b/docs/pages/reference/carpet.md
new file mode 100644
index 00000000000..72ba3589fd5
--- /dev/null
+++ b/docs/pages/reference/carpet.md
@@ -0,0 +1,2 @@
+# carpet
+--8<-- "reference/carpet/index.html"
diff --git a/docs/pages/reference/choropleth.md b/docs/pages/reference/choropleth.md
new file mode 100644
index 00000000000..afe47d1b106
--- /dev/null
+++ b/docs/pages/reference/choropleth.md
@@ -0,0 +1,2 @@
+# choropleth
+--8<-- "reference/choropleth/index.html"
diff --git a/docs/pages/reference/choroplethmap.md b/docs/pages/reference/choroplethmap.md
new file mode 100644
index 00000000000..f03e2526626
--- /dev/null
+++ b/docs/pages/reference/choroplethmap.md
@@ -0,0 +1,2 @@
+# choroplethmap
+--8<-- "reference/choroplethmap/index.html"
diff --git a/docs/pages/reference/choroplethmapbox.md b/docs/pages/reference/choroplethmapbox.md
new file mode 100644
index 00000000000..d29374ec55d
--- /dev/null
+++ b/docs/pages/reference/choroplethmapbox.md
@@ -0,0 +1,2 @@
+# choroplethmapbox
+--8<-- "reference/choroplethmapbox/index.html"
diff --git a/docs/pages/reference/cone.md b/docs/pages/reference/cone.md
new file mode 100644
index 00000000000..04753a94331
--- /dev/null
+++ b/docs/pages/reference/cone.md
@@ -0,0 +1,2 @@
+# cone
+--8<-- "reference/cone/index.html"
diff --git a/docs/pages/reference/contour.md b/docs/pages/reference/contour.md
new file mode 100644
index 00000000000..56f14909fe2
--- /dev/null
+++ b/docs/pages/reference/contour.md
@@ -0,0 +1,2 @@
+# contour
+--8<-- "reference/contour/index.html"
diff --git a/docs/pages/reference/contourcarpet.md b/docs/pages/reference/contourcarpet.md
new file mode 100644
index 00000000000..add81800520
--- /dev/null
+++ b/docs/pages/reference/contourcarpet.md
@@ -0,0 +1,2 @@
+# contourcarpet
+--8<-- "reference/contourcarpet/index.html"
diff --git a/docs/pages/reference/densitymap.md b/docs/pages/reference/densitymap.md
new file mode 100644
index 00000000000..1d9972627a1
--- /dev/null
+++ b/docs/pages/reference/densitymap.md
@@ -0,0 +1,2 @@
+# densitymap
+--8<-- "reference/densitymap/index.html"
diff --git a/docs/pages/reference/densitymapbox.md b/docs/pages/reference/densitymapbox.md
new file mode 100644
index 00000000000..de7d2042587
--- /dev/null
+++ b/docs/pages/reference/densitymapbox.md
@@ -0,0 +1,2 @@
+# densitymapbox
+--8<-- "reference/densitymapbox/index.html"
diff --git a/docs/pages/reference/funnel.md b/docs/pages/reference/funnel.md
new file mode 100644
index 00000000000..55e7f464376
--- /dev/null
+++ b/docs/pages/reference/funnel.md
@@ -0,0 +1,2 @@
+# funnel
+--8<-- "reference/funnel/index.html"
diff --git a/docs/pages/reference/funnelarea.md b/docs/pages/reference/funnelarea.md
new file mode 100644
index 00000000000..64644d30746
--- /dev/null
+++ b/docs/pages/reference/funnelarea.md
@@ -0,0 +1,2 @@
+# funnelarea
+--8<-- "reference/funnelarea/index.html"
diff --git a/docs/pages/reference/heatmap.md b/docs/pages/reference/heatmap.md
new file mode 100644
index 00000000000..5283ac35c38
--- /dev/null
+++ b/docs/pages/reference/heatmap.md
@@ -0,0 +1,2 @@
+# heatmap
+--8<-- "reference/heatmap/index.html"
diff --git a/docs/pages/reference/histogram.md b/docs/pages/reference/histogram.md
new file mode 100644
index 00000000000..b57c4ad99fe
--- /dev/null
+++ b/docs/pages/reference/histogram.md
@@ -0,0 +1,2 @@
+# histogram
+--8<-- "reference/histogram/index.html"
diff --git a/docs/pages/reference/histogram2d.md b/docs/pages/reference/histogram2d.md
new file mode 100644
index 00000000000..7936a555435
--- /dev/null
+++ b/docs/pages/reference/histogram2d.md
@@ -0,0 +1,2 @@
+# histogram2d
+--8<-- "reference/histogram2d/index.html"
diff --git a/docs/pages/reference/histogram2dcontour.md b/docs/pages/reference/histogram2dcontour.md
new file mode 100644
index 00000000000..817aec57052
--- /dev/null
+++ b/docs/pages/reference/histogram2dcontour.md
@@ -0,0 +1,2 @@
+# histogram2dcontour
+--8<-- "reference/histogram2dcontour/index.html"
diff --git a/docs/pages/reference/icicle.md b/docs/pages/reference/icicle.md
new file mode 100644
index 00000000000..506de166f39
--- /dev/null
+++ b/docs/pages/reference/icicle.md
@@ -0,0 +1,2 @@
+# icicle
+--8<-- "reference/icicle/index.html"
diff --git a/docs/pages/reference/image.md b/docs/pages/reference/image.md
new file mode 100644
index 00000000000..b0504e69818
--- /dev/null
+++ b/docs/pages/reference/image.md
@@ -0,0 +1,2 @@
+# image
+--8<-- "reference/image/index.html"
diff --git a/docs/pages/reference/index.md b/docs/pages/reference/index.md
new file mode 100644
index 00000000000..74e79df6a71
--- /dev/null
+++ b/docs/pages/reference/index.md
@@ -0,0 +1,125 @@
+## Core Objects
+
+### [Layout](layout.md)
+
+
+## Simple Traces
+
+### [Bar](bar.md)
+
+### [Contour](contour.md)
+
+### [Heatmap](heatmap.md)
+
+### [Image](image.md)
+
+### [Pie](pie.md)
+
+### [Scatter](scatter.md)
+
+### [Scatter GL](scattergl.md)
+
+### [Table](table.md)
+
+
+## Distribution Traces
+
+### [Box](box.md)
+
+### [Histogram](histogram.md)
+
+### [Histogram 2D](histogram2d.md)
+
+### [Histogram 2D Contour](histogram2dcontour.md)
+
+### [Violin](violin.md)
+
+
+
+## Finance Traces
+
+### [Candlestick](candlestick.md)
+
+### [Funnel](funnel.md)
+
+### [Funnel Area](funnelarea.md)
+
+### [Indicator](indicator.md)
+
+### [OHLC](ohlc.md)
+
+### [Waterfall](waterfall.md)
+
+
+
+## 3D Traces
+
+### [Cone](cone.md)
+
+### [Isosurface](isosurface.md)
+
+### [Mesh 3D](mesh3d.md)
+
+### [Scatter 3D](scatter3d.md)
+
+### [Streamtube](streamtube.md)
+
+### [Surface](surface.md)
+
+### [Volume](volume.md)
+
+
+## Map Traces
+
+
+### [Choropleth](choropleth.md)
+
+### [Choropleth Map](choroplethmap.md)
+
+### [Choropleth Mapbox](choroplethmapbox.md)
+
+### [Density Map](densitymap.md)
+
+### [Density Mapbox](densitymapbox.md)
+
+### [Scatter Geo](scattergeo.md)
+
+### [Scatter Map](scattermap.md)
+
+### [Scatter Mapbox](scattermapbox.md)
+
+
+## Specialized Traces:
+
+### [Bar Polar](barpolar.md)
+
+### [Carpet](carpet.md)
+
+### [Contour Carpet](contourcarpet.md)
+
+### [Icicle](icicle.md)
+
+### [Parallel Categories](parcats.md)
+
+### [Parallel Coordinates](parcoords.md)
+
+### [Sankey](sankey.md)
+
+### [Scatter Carpet](scattercarpet.md)
+
+### [Scatter Polar](scatterpolar.md)
+
+### [Scatter Polar GL](scatterpolargl.md)
+
+### [Scatter Smith](scattersmith.md)
+
+### [Scatter Ternary](scatterternary.md)
+
+### [SPLOM](splom.md)
+
+### [Sunburst](sunburst.md)
+
+### [Treemap](treemap.md)
+
+
+
diff --git a/docs/pages/reference/index/index.md b/docs/pages/reference/index/index.md
new file mode 100644
index 00000000000..e5971903491
--- /dev/null
+++ b/docs/pages/reference/index/index.md
@@ -0,0 +1,53 @@
+The pages linked in the sidebar together form the exhaustive reference for all of the attributes in the core figure data structure
+that the plotly library operates on. They are automatically-generated from the
+ machine-readable Plotly.js schema reference.
+ plotly.js charts are described declaratively as JSON objects. Every aspect of a plotly chart (the colors, the grids, the data, and so on) has a corresponding JSON attribute. This page contains an extensive list of these attributes.
+
+ Plotly's graph description places attributes into two categories: traces (objects that describe a single series of data in a graph) and layout (attributes that apply to the rest of the chart, like the title, xaxis, or annotations). Traces are categorized by chart type (e.g. scatter, heatmap).
+
+ Here is a simple example of a plotly chart inlined with links to each attribute's reference section.
+
+
+data = [
+ {
+ type: 'scatter', // all "scatter" attributes: https://plotly.com/javascript/reference/#scatter
+ x: [1, 2, 3], // more about "x": #scatter-x
+ y: [3, 1, 6], // #scatter-y
+ marker: { // marker is an object, valid marker keys: #scatter-marker
+ color: 'rgb(16, 32, 77)' // more about "marker.color": #scatter-marker-color
+ }
+ },
+ {
+ type: 'bar', // all "bar" chart attributes: #bar
+ x: [1, 2, 3], // more about "x": #bar-x
+ y: [3, 1, 6], // #bar-y
+ name: 'bar chart example' // #bar-name
+ }
+];
+
+layout = { // all "layout" attributes: #layout
+ title: 'simple example', // more about "layout.title": #layout-title
+ xaxis: { // all "layout.xaxis" attributes: #layout-xaxis
+ title: 'time' // more about "layout.xaxis.title": #layout-xaxis-title
+ },
+ annotations: [ // all "annotation" attributes: #layout-annotations
+ {
+ text: 'simple annotation', // #layout-annotations-text
+ x: 0, // #layout-annotations-x
+ xref: 'paper', // #layout-annotations-xref
+ y: 0, // #layout-annotations-y
+ yref: 'paper' // #layout-annotations-yref
+ }
+ ]
+}
+
+
+
+