diff --git a/plotly/graph_reference/default-schema.json b/plotly/graph_reference/default-schema.json index a14218abfd3..ed1b0407183 100644 --- a/plotly/graph_reference/default-schema.json +++ b/plotly/graph_reference/default-schema.json @@ -253,17 +253,37 @@ "valType": "number" }, "ax": { - "description": "Sets the x component of the arrow tail about the arrow head. A positive (negative) component corresponds to an arrow pointing from right to left (left to right)", + "description": "Sets the x component of the arrow tail about the arrow head. If `axref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from right to left (left to right). If `axref` is an axis, this is a value on that axis.", "dflt": -10, "role": "info", "valType": "number" }, + "axref": { + "description": "Indicates in what terms the tail of the annotation (ax,ay) is specified. If `pixel`, `ax` is a relative offset in pixels from `x`. If set to an x axis id (e.g. *x* or *x2*), `ax` is specified in the same terms as that axis. This is useful for trendline annotations which should continue to indicate the correct trend when zoomed.", + "dflt": "pixel", + "role": "info", + "valType": "enumerated", + "values": [ + "pixel", + "/^x([2-9]|[1-9][0-9]+)?$/" + ] + }, "ay": { - "description": "Sets the y component of the arrow tail about the arrow head. A positive (negative) component corresponds to an arrow pointing from bottom to top (top to bottom)", + "description": "Sets the y component of the arrow tail about the arrow head. If `ayref` is `pixel`, a positive (negative) component corresponds to an arrow pointing from bottom to top (top to bottom). If `ayref` is an axis, this is a value on that axis.", "dflt": -30, "role": "info", "valType": "number" }, + "ayref": { + "description": "Indicates in what terms the tail of the annotation (ax,ay) is specified. If `pixel`, `ay` is a relative offset in pixels from `y`. If set to a y axis id (e.g. *y* or *y2*), `ay` is specified in the same terms as that axis. This is useful for trendline annotations which should continue to indicate the correct trend when zoomed.", + "dflt": "pixel", + "role": "info", + "valType": "enumerated", + "values": [ + "pixel", + "/^y([2-9]|[1-9][0-9]+)?$/" + ] + }, "bgcolor": { "description": "Sets the background color of the annotation.", "dflt": "rgba(0,0,0,0)", @@ -1494,7 +1514,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -1899,7 +1919,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -2304,7 +2324,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -2795,7 +2815,7 @@ "valType": "number" }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 6, "min": 1, "role": "style", @@ -3059,7 +3079,7 @@ "valType": "number" }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 6, "min": 1, "role": "style", @@ -3329,7 +3349,7 @@ "valType": "number" }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 6, "min": 1, "role": "style", @@ -3764,7 +3784,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -4374,7 +4394,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -4864,7 +4884,7 @@ "marker": { "color": { "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, @@ -5529,13 +5549,13 @@ }, "marker": { "autocolorscale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `marker.color`.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `marker.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -5554,7 +5574,7 @@ }, "color": { "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, @@ -5616,7 +5636,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -5897,7 +5917,7 @@ } }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`.", + "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -5908,13 +5928,13 @@ }, "line": { "autocolorscale": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `marker.line.color`.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -5933,12 +5953,12 @@ }, "color": { "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`.", + "description": "Sets the colorscale and only has an effect if `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -5948,7 +5968,7 @@ "valType": "string" }, "reversescale": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -5957,6 +5977,7 @@ "width": { "arrayOk": true, "description": "Sets the width (in px) of the lines bounding the marker points.", + "dflt": 0, "min": 0, "role": "style", "valType": "number" @@ -5968,7 +5989,7 @@ } }, "reversescale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -6239,14 +6260,14 @@ "marker": { "color": { "arrayOk": false, - "description": "Sets the marker color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, "line": { "color": { "arrayOk": false, - "description": "Sets the marker.line color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "dflt": "#444", "role": "style", "valType": "color" @@ -6806,7 +6827,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -7144,7 +7165,7 @@ "line": { "color": { "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, @@ -7346,7 +7367,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -7754,7 +7775,7 @@ "valType": "string" }, "ncontours": { - "description": "Sets the number of contour levels. Has an effect only if `autocontour` is *true*.", + "description": "Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true*.", "dflt": 0, "role": "style", "valType": "integer" @@ -7993,7 +8014,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -8785,13 +8806,13 @@ }, "marker": { "autocolorscale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `marker.color`.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `marker.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -8810,7 +8831,7 @@ }, "color": { "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, @@ -8872,7 +8893,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -9153,7 +9174,7 @@ } }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`.", + "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -9164,13 +9185,13 @@ }, "line": { "autocolorscale": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `marker.line.color`.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -9189,12 +9210,12 @@ }, "color": { "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`.", + "description": "Sets the colorscale and only has an effect if `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -9204,7 +9225,7 @@ "valType": "string" }, "reversescale": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -9225,7 +9246,7 @@ } }, "reversescale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -9520,7 +9541,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -10146,7 +10167,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -10589,7 +10610,7 @@ "valType": "integer" }, "ncontours": { - "description": "Sets the number of contour levels. Has an effect only if `autocontour` is *true*.", + "description": "Sets the maximum number of contour levels. The actual number of contours will be chosen automatically to be less than or equal to the value of `ncontours`. Has an effect only if `autocontour` is *true*.", "dflt": 0, "role": "style", "valType": "integer" @@ -10830,7 +10851,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -12053,6 +12074,15 @@ "role": "info", "valType": "flaglist" }, + "hoveron": { + "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", + "flags": [ + "points", + "fills" + ], + "role": "info", + "valType": "flaglist" + }, "legendgroup": { "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items.", "dflt": "", @@ -12112,13 +12142,13 @@ }, "marker": { "autocolorscale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `marker.color`.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `marker.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -12137,7 +12167,7 @@ }, "color": { "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, @@ -12199,7 +12229,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -12480,7 +12510,7 @@ } }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`.", + "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -12491,13 +12521,13 @@ }, "line": { "autocolorscale": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `marker.line.color`.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -12516,12 +12546,12 @@ }, "color": { "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`.", + "description": "Sets the colorscale and only has an effect if `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -12531,7 +12561,7 @@ "valType": "string" }, "reversescale": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -12571,7 +12601,7 @@ "valType": "string" }, "reversescale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -13463,11 +13493,46 @@ "valType": "string" }, "line": { + "autocolorscale": { + "description": "Has an effect only if `line.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `line.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", + "dflt": true, + "role": "style", + "valType": "boolean" + }, + "cauto": { + "description": "Has an effect only if `line.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", + "dflt": true, + "role": "info", + "valType": "boolean" + }, + "cmax": { + "description": "Has an effect only if `line.color` is set to a numerical array. Sets the upper bound of the color domain. Value should be associated to the `line.color` array index, and if set, `line.cmin` must be set as well.", + "dflt": null, + "role": "info", + "valType": "number" + }, + "cmin": { + "description": "Has an effect only if `line.color` is set to a numerical array. Sets the lower bound of the color domain. Value should be associated to the `line.color` array index, and if set, `line.cmax` must be set as well.", + "dflt": null, + "role": "info", + "valType": "number" + }, "color": { - "description": "Sets the line color.", + "arrayOk": true, + "description": "Sets the line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, + "colorscale": { + "description": "Sets the colorscale and only has an effect if `line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `line.cmin` and `line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", + "role": "style", + "valType": "colorscale" + }, + "colorsrc": { + "description": "Sets the source reference on plot.ly for color .", + "role": "info", + "valType": "string" + }, "dash": { "description": "Sets the style of the lines. Set to a dash string type or a dash length in px.", "dflt": "solid", @@ -13482,7 +13547,19 @@ "longdashdot" ] }, + "reversescale": { + "description": "Has an effect only if `line.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", + "dflt": false, + "role": "style", + "valType": "boolean" + }, "role": "object", + "showscale": { + "description": "Has an effect only if `line.color` is set to a numerical array. Determines whether or not a colorbar is displayed.", + "dflt": false, + "role": "info", + "valType": "boolean" + }, "width": { "description": "Sets the line width (in px).", "dflt": 2, @@ -13493,13 +13570,13 @@ }, "marker": { "autocolorscale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `marker.color`.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `marker.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -13518,7 +13595,7 @@ }, "color": { "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, @@ -13580,7 +13657,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -13861,7 +13938,7 @@ } }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`.", + "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -13872,13 +13949,13 @@ }, "line": { "autocolorscale": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `marker.line.color`.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -13897,12 +13974,12 @@ }, "color": { "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`.", + "description": "Sets the colorscale and only has an effect if `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -13912,7 +13989,7 @@ "valType": "string" }, "reversescale": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -13935,7 +14012,7 @@ "valType": "number" }, "reversescale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -14382,13 +14459,13 @@ }, "marker": { "autocolorscale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `marker.color`.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `marker.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -14407,7 +14484,7 @@ }, "color": { "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, @@ -14469,7 +14546,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -14750,7 +14827,7 @@ } }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`.", + "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -14761,13 +14838,13 @@ }, "line": { "autocolorscale": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `marker.line.color`.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -14786,12 +14863,12 @@ }, "color": { "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`.", + "description": "Sets the colorscale and only has an effect if `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -14801,7 +14878,7 @@ "valType": "string" }, "reversescale": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -14834,7 +14911,7 @@ "valType": "string" }, "reversescale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -15619,13 +15696,13 @@ }, "marker": { "autocolorscale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `marker.color`.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `marker.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -15644,7 +15721,7 @@ }, "color": { "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, @@ -15706,7 +15783,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -15987,7 +16064,7 @@ } }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`.", + "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -15998,13 +16075,13 @@ }, "line": { "autocolorscale": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `marker.line.color`.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.line.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -16023,12 +16100,12 @@ }, "color": { "arrayOk": true, - "description": "Sets the marker.line color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker.line color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`.", + "description": "Sets the colorscale and only has an effect if `marker.line.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.line.cmin` and `marker.line.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -16038,7 +16115,7 @@ "valType": "string" }, "reversescale": { - "description": "Has an effect only if `marker.line.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `marker.line.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -16071,7 +16148,7 @@ "valType": "string" }, "reversescale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -16336,6 +16413,15 @@ "role": "info", "valType": "flaglist" }, + "hoveron": { + "description": "Do the hover effects highlight individual points (markers or line points) or do they highlight filled regions? If the fill is *toself* or *tonext* and there are no markers or text, then the default is *fills*, otherwise it is *points*.", + "flags": [ + "points", + "fills" + ], + "role": "info", + "valType": "flaglist" + }, "legendgroup": { "description": "Sets the legend group for this trace. Traces part of the same legend group hide/show at the same time when toggling legend items.", "dflt": "", @@ -16391,13 +16477,13 @@ }, "marker": { "autocolorscale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `marker.color`.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `marker.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `marker.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -16416,7 +16502,7 @@ }, "color": { "arrayOk": true, - "description": "Sets the marker color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the marker color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, @@ -16478,7 +16564,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -16759,7 +16845,7 @@ } }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`.", + "description": "Sets the colorscale and only has an effect if `marker.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `marker.cmin` and `marker.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -16770,13 +16856,13 @@ }, "line": { "autocolorscale": { - "description": "Has an effect only if `.color` is set to a numerical array. Determines whether or not the colorscale is picked using values inside `.color`.", + "description": "Has an effect only if `.color` is set to a numerical array. Determines whether the colorscale is a default palette (`autocolorscale: true`) or the palette determined by `.colorscale`. In case `colorscale` is unspecified or `autocolorscale` is true, the default palette will be chosen according to whether numbers in the `color` array are all positive, all negative or mixed.", "dflt": true, "role": "style", "valType": "boolean" }, "cauto": { - "description": "Has an effect only if `.color` is set to a numerical array. Determines the whether or not the color domain is computed automatically.", + "description": "Has an effect only if `.color` is set to a numerical array and `cmin`, `cmax` are set by the user. In this case, it controls whether the range of colors in `colorscale` is mapped to the range of values in the `color` array (`cauto: true`), or the `cmin`/`cmax` values (`cauto: false`). Defaults to `false` when `cmin`, `cmax` are set by the user.", "dflt": true, "role": "info", "valType": "boolean" @@ -16795,12 +16881,12 @@ }, "color": { "arrayOk": true, - "description": "Sets the color. It accepts either a specific color or an array of values that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", + "description": "Sets the color. It accepts either a specific color or an array of numbers that are mapped to the colorscale relative to the max and min values of the array or relative to `cmin` and `cmax` if set.", "role": "style", "valType": "color" }, "colorscale": { - "description": "Sets the colorscale and only has an effect if `.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `.cmin` and `.cmax`.", + "description": "Sets the colorscale and only has an effect if `.color` is set to a numerical array. The colorscale must be an array containing arrays mapping a normalized value to an rgb, rgba, hex, hsl, hsv, or named color string. At minimum, a mapping for the lowest (0) and highest (1) values are required. For example, `[[0, 'rgb(0,0,255)', [1, 'rgb(255,0,0)']]`. To control the bounds of the colorscale in color space, use `.cmin` and `.cmax`. Alternatively, `colorscale` may be a palette name string of the following list: Greys, YlGnBu, Greens, YlOrRd, Bluered, RdBu, Reds, Blues, Picnic, Rainbow, Portland, Jet, Hot, Blackbody, Earth, Electric, Viridis", "role": "style", "valType": "colorscale" }, @@ -16810,7 +16896,7 @@ "valType": "string" }, "reversescale": { - "description": "Has an effect only if `.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -16850,7 +16936,7 @@ "valType": "string" }, "reversescale": { - "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the colorscale.", + "description": "Has an effect only if `marker.color` is set to a numerical array. Reverses the color mapping if true (`cmin` will correspond to the last color in the array and `cmax` will correspond to the first color).", "dflt": false, "role": "style", "valType": "boolean" @@ -17456,7 +17542,7 @@ ] }, "nticks": { - "description": "Sets the number of ticks. Has an effect only if `tickmode` is set to *auto*.", + "description": "Specifies the maximum number of ticks for the particular axis. The actual number of ticks will be chosen automatically to be less than or equal to `nticks`. Has an effect only if `tickmode` is set to *auto*.", "dflt": 0, "min": 0, "role": "style", @@ -17773,19 +17859,19 @@ "project": { "role": "object", "x": { - "description": "Determines whether or not these contour lines are projected on the x axis walls. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", + "description": "Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", "dflt": false, "role": "info", "valType": "boolean" }, "y": { - "description": "Determines whether or not these contour lines are projected on the y axis walls. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", + "description": "Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", "dflt": false, "role": "info", "valType": "boolean" }, "z": { - "description": "Determines whether or not these contour lines are projected on the z axis walls. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", + "description": "Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", "dflt": false, "role": "info", "valType": "boolean" @@ -17843,19 +17929,19 @@ "project": { "role": "object", "x": { - "description": "Determines whether or not these contour lines are projected on the x axis walls. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", + "description": "Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", "dflt": false, "role": "info", "valType": "boolean" }, "y": { - "description": "Determines whether or not these contour lines are projected on the y axis walls. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", + "description": "Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", "dflt": false, "role": "info", "valType": "boolean" }, "z": { - "description": "Determines whether or not these contour lines are projected on the z axis walls. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", + "description": "Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", "dflt": false, "role": "info", "valType": "boolean" @@ -17913,19 +17999,19 @@ "project": { "role": "object", "x": { - "description": "Determines whether or not these contour lines are projected on the x axis walls. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", + "description": "Determines whether or not these contour lines are projected on the x plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", "dflt": false, "role": "info", "valType": "boolean" }, "y": { - "description": "Determines whether or not these contour lines are projected on the y axis walls. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", + "description": "Determines whether or not these contour lines are projected on the y plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", "dflt": false, "role": "info", "valType": "boolean" }, "z": { - "description": "Determines whether or not these contour lines are projected on the z axis walls. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", + "description": "Determines whether or not these contour lines are projected on the z plane. If `highlight` is set to *true* (the default), the projected lines are shown on hover. If `show` is set to *true*, the projected lines are shown in permanence.", "dflt": false, "role": "info", "valType": "boolean" diff --git a/plotly/tests/test_core/test_tools/test_figure_factory.py b/plotly/tests/test_core/test_tools/test_figure_factory.py index 97fb061b213..8d7c5a36fdd 100644 --- a/plotly/tests/test_core/test_tools/test_figure_factory.py +++ b/plotly/tests/test_core/test_tools/test_figure_factory.py @@ -1365,6 +1365,111 @@ def test_gantt_all_args(self): self.assertEqual(test_gantt_chart['layout'], exp_gantt_chart['layout']) + +class Test2D_Density(TestCase): + + def test_validate_2D_density(self): + + # validate that x and y contain only numbers + x = [1, 2] + y = ['a', 2] + + pattern = ("All elements of your 'x' and 'y' lists must be numbers.") + + self.assertRaisesRegexp(PlotlyError, pattern, + tls.FigureFactory.create_2D_density, x, y) + + # validate that x and y are the same length + x2 = [1] + y2 = [1, 2] + + pattern2 = ("Both lists 'x' and 'y' must be the same length.") + + self.assertRaisesRegexp(PlotlyError, pattern2, + tls.FigureFactory.create_2D_density, x2, y2) + + def test_2D_density_all_args(self): + + # check if 2D_density data matches with expected output + x = [1, 2] + y = [2, 4] + + colorscale = ['#7A4579', '#D56073', 'rgb(236,158,105)', + (1, 1, 0.2), (0.98, 0.98, 0.98)] + + test_2D_density_chart = tls.FigureFactory.create_2D_density( + x, y, colorscale=colorscale, hist_color='rgb(255, 237, 222)', + point_size=3, height=800, width=800) + + exp_2D_density_chart = { + 'data': [{'marker': {'color': 'rgb(0.0, 0.0, 127.5)', + 'opacity': 0.4, + 'size': 3}, + 'mode': 'markers', + 'name': 'points', + 'type': 'scatter', + 'x': [1, 2], + 'y': [2, 4]}, + {'colorscale': [[0.0, 'rgb(122.0, 69.0, 121.0)'], + [0.25, 'rgb(213.0, 96.0, 115.0)'], + [0.5, 'rgb(236.0, 158.0, 105.0)'], + [0.75, 'rgb(255.0, 255.0, 51.0)'], + [1.0, 'rgb(249.9, 249.9, 249.9)']], + 'name': 'density', + 'ncontours': 20, + 'reversescale': True, + 'showscale': False, + 'type': 'histogram2dcontour', + 'x': [1, 2], + 'y': [2, 4]}, + {'marker': {'color': 'rgb(255.0, 237.0, 222.0)'}, + 'name': 'x density', + 'type': 'histogram', + 'x': [1, 2], + 'yaxis': 'y2'}, + {'marker': {'color': 'rgb(255.0, 237.0, 222.0)'}, + 'name': 'y density', + 'type': 'histogram', + 'xaxis': 'x2', + 'y': [2, 4]}], + 'layout': {'autosize': False, + 'bargap': 0, + 'height': 800, + 'hovermode': 'closest', + 'margin': {'t': 50}, + 'showlegend': False, + 'title': 'Love', + 'width': 800, + 'xaxis': {'domain': [0, 0.85], + 'showgrid': False, + 'zeroline': False}, + 'xaxis2': {'domain': [0.85, 1], + 'showgrid': False, + 'zeroline': False}, + 'yaxis': {'domain': [0, 0.85], + 'showgrid': False, + 'zeroline': False}, + 'yaxis2': {'domain': [0.85, 1], + 'showgrid': False, + 'zeroline': False}} + } + + self.assertEqual(test_2D_density_chart['data'][0], + exp_2D_density_chart['data'][0]) + + self.assertEqual(test_2D_density_chart['data'][1], + exp_2D_density_chart['data'][1]) + + self.assertEqual(test_2D_density_chart['data'][2], + exp_2D_density_chart['data'][2]) + + self.assertEqual(test_2D_density_chart['data'][3], + exp_2D_density_chart['data'][3]) + + self.assertEqual(test_2D_density_chart['layout'], + exp_2D_density_chart['layout']) + + # class TestDistplot(TestCase): # def test_scipy_import_error(self): diff --git a/plotly/tools.py b/plotly/tools.py index bdef4f8081d..4c3b7dd96f2 100644 --- a/plotly/tools.py +++ b/plotly/tools.py @@ -1476,6 +1476,161 @@ class FigureFactory(object): more information and examples of a specific chart type. """ + @staticmethod + def _make_linear_colorscale(colors): + """ + Makes a list of colors into a colorscale-acceptable form + + For documentation regarding to the form of the output, see + https://plot.ly/python/reference/#mesh3d-colorscale + """ + scale = 1./(len(colors) - 1) + return[[i * scale, color] for i, color in enumerate(colors)] + + @staticmethod + def create_2D_density(x, y, colorscale='Earth', ncontours=20, + hist_color=(0, 0, 0.5), point_color=(0, 0, 0.5), + point_size=2, height=600, width=600): + """ + Returns figure for a 2D density plot + + :param (list|array) x: x-axis data for plot generation + :param (list|array) y: y-axis data for plot generation + :param (str|tuple|list) colorscale: either a plotly scale name, an rgb + or hex color, a color tuple or a list or tuple of colors. An rgb + color is of the form 'rgb(x, y, z)' where x, y, z belong to the + interval [0, 255] and a color tuple is a tuple of the form + (a, b, c) where a, b and c belong to [0, 1]. If colormap is a + list, it must contain the valid color types aforementioned as its + members. + :param (int) ncontours: the number of 2D contours to draw on the plot + :param (str) hist_color: the color of the plotted histograms + :param (str) point_color: the color of the scatter points + :param (str) point_size: the color of the scatter points + :param (float) height: the height of the chart + :param (float) width: the width of the chart + + Example 1: Simple 2D Density Plot + ``` + import plotly.plotly as py + from plotly.tools import FigureFactory as FF + + # Make data points + t = np.linspace(-1,1.2,2000) + x = (t**3)+(0.3*np.random.randn(2000)) + y = (t**6)+(0.3*np.random.randn(2000)) + + # Create a figure + fig = FF.create_2D_density(x, y) + + # Plot the data + py.iplot(fig, filename='simple-2d-density') + ``` + + Example 2: Using Parameters + ``` + import plotly.plotly as py + from plotly.tools import FigureFactory as FF + + # Make data points + t = np.linspace(-1,1.2,2000) + x = (t**3)+(0.3*np.random.randn(2000)) + y = (t**6)+(0.3*np.random.randn(2000)) + + # Create custom colorscale + colorscale = ['#7A4579', '#D56073', 'rgb(236,158,105)', + (1, 1, 0.2), (0.98,0.98,0.98)] + + # Create a figure + fig = FF.create_2D_density( + x, y, colorscale=colorscale, + hist_color='rgb(255, 237, 222)', point_size=3) + + # Plot the data + py.iplot(fig, filename='use-parameters') + ``` + """ + from plotly.graph_objs import graph_objs + from numbers import Number + + # validate x and y are filled with numbers only + for array in [x, y]: + if not all(isinstance(element, Number) for element in array): + raise exceptions.PlotlyError( + "All elements of your 'x' and 'y' lists must be numbers." + ) + + # validate x and y are the same length + if len(x) != len(y): + raise exceptions.PlotlyError( + "Both lists 'x' and 'y' must be the same length." + ) + + colorscale = FigureFactory._validate_colors(colorscale, 'rgb') + colorscale = FigureFactory._make_linear_colorscale(colorscale) + + # validate hist_color and point_color + hist_color = FigureFactory._validate_colors(hist_color, 'rgb') + point_color = FigureFactory._validate_colors(point_color, 'rgb') + + trace1 = graph_objs.Scatter( + x=x, y=y, mode='markers', name='points', + marker=dict( + color=point_color[0], + size=point_size, + opacity=0.4 + ) + ) + trace2 = graph_objs.Histogram2dcontour( + x=x, y=y, name='density', ncontours=ncontours, + colorscale=colorscale, reversescale=True, showscale=False + ) + trace3 = graph_objs.Histogram( + x=x, name='x density', + marker=dict(color=hist_color[0]), yaxis='y2' + ) + trace4 = graph_objs.Histogram( + y=y, name='y density', + marker=dict(color=hist_color[0]), xaxis='x2' + ) + data = [trace1, trace2, trace3, trace4] + + layout = graph_objs.Layout( + showlegend=False, + autosize=False, + title='Love', + height=height, + width=width, + xaxis=dict( + domain=[0, 0.85], + showgrid=False, + zeroline=False + ), + yaxis=dict( + domain=[0, 0.85], + showgrid=False, + zeroline=False + ), + margin=dict( + t=50 + ), + hovermode='closest', + bargap=0, + xaxis2=dict( + domain=[0.85, 1], + showgrid=False, + zeroline=False + ), + yaxis2=dict( + domain=[0.85, 1], + showgrid=False, + zeroline=False + ) + ) + + fig = graph_objs.Figure(data=data, layout=layout) + return fig + @staticmethod def _validate_gantt(df): """ diff --git a/plotly/version.py b/plotly/version.py index 96ddfeb7847..3081afbab00 100644 --- a/plotly/version.py +++ b/plotly/version.py @@ -1 +1 @@ -__version__ = '1.12.2' +__version__ = '1.12.3'