1from plotly.basedatatypes import BaseLayoutHierarchyType as _BaseLayoutHierarchyType
2import copy as _copy
3
4
5class Baxis(_BaseLayoutHierarchyType):
6
7    # class properties
8    # --------------------
9    _parent_path_str = "layout.ternary"
10    _path_str = "layout.ternary.baxis"
11    _valid_props = {
12        "color",
13        "dtick",
14        "exponentformat",
15        "gridcolor",
16        "gridwidth",
17        "hoverformat",
18        "layer",
19        "linecolor",
20        "linewidth",
21        "min",
22        "minexponent",
23        "nticks",
24        "separatethousands",
25        "showexponent",
26        "showgrid",
27        "showline",
28        "showticklabels",
29        "showtickprefix",
30        "showticksuffix",
31        "tick0",
32        "tickangle",
33        "tickcolor",
34        "tickfont",
35        "tickformat",
36        "tickformatstopdefaults",
37        "tickformatstops",
38        "ticklen",
39        "tickmode",
40        "tickprefix",
41        "ticks",
42        "ticksuffix",
43        "ticktext",
44        "ticktextsrc",
45        "tickvals",
46        "tickvalssrc",
47        "tickwidth",
48        "title",
49        "titlefont",
50        "uirevision",
51    }
52
53    # color
54    # -----
55    @property
56    def color(self):
57        """
58        Sets default for all colors associated with this axis all at
59        once: line, font, tick, and grid colors. Grid color is
60        lightened by blending this with the plot background Individual
61        pieces can override this.
62
63        The 'color' property is a color and may be specified as:
64          - A hex string (e.g. '#ff0000')
65          - An rgb/rgba string (e.g. 'rgb(255,0,0)')
66          - An hsl/hsla string (e.g. 'hsl(0,100%,50%)')
67          - An hsv/hsva string (e.g. 'hsv(0,100%,100%)')
68          - A named CSS color:
69                aliceblue, antiquewhite, aqua, aquamarine, azure,
70                beige, bisque, black, blanchedalmond, blue,
71                blueviolet, brown, burlywood, cadetblue,
72                chartreuse, chocolate, coral, cornflowerblue,
73                cornsilk, crimson, cyan, darkblue, darkcyan,
74                darkgoldenrod, darkgray, darkgrey, darkgreen,
75                darkkhaki, darkmagenta, darkolivegreen, darkorange,
76                darkorchid, darkred, darksalmon, darkseagreen,
77                darkslateblue, darkslategray, darkslategrey,
78                darkturquoise, darkviolet, deeppink, deepskyblue,
79                dimgray, dimgrey, dodgerblue, firebrick,
80                floralwhite, forestgreen, fuchsia, gainsboro,
81                ghostwhite, gold, goldenrod, gray, grey, green,
82                greenyellow, honeydew, hotpink, indianred, indigo,
83                ivory, khaki, lavender, lavenderblush, lawngreen,
84                lemonchiffon, lightblue, lightcoral, lightcyan,
85                lightgoldenrodyellow, lightgray, lightgrey,
86                lightgreen, lightpink, lightsalmon, lightseagreen,
87                lightskyblue, lightslategray, lightslategrey,
88                lightsteelblue, lightyellow, lime, limegreen,
89                linen, magenta, maroon, mediumaquamarine,
90                mediumblue, mediumorchid, mediumpurple,
91                mediumseagreen, mediumslateblue, mediumspringgreen,
92                mediumturquoise, mediumvioletred, midnightblue,
93                mintcream, mistyrose, moccasin, navajowhite, navy,
94                oldlace, olive, olivedrab, orange, orangered,
95                orchid, palegoldenrod, palegreen, paleturquoise,
96                palevioletred, papayawhip, peachpuff, peru, pink,
97                plum, powderblue, purple, red, rosybrown,
98                royalblue, rebeccapurple, saddlebrown, salmon,
99                sandybrown, seagreen, seashell, sienna, silver,
100                skyblue, slateblue, slategray, slategrey, snow,
101                springgreen, steelblue, tan, teal, thistle, tomato,
102                turquoise, violet, wheat, white, whitesmoke,
103                yellow, yellowgreen
104
105        Returns
106        -------
107        str
108        """
109        return self["color"]
110
111    @color.setter
112    def color(self, val):
113        self["color"] = val
114
115    # dtick
116    # -----
117    @property
118    def dtick(self):
119        """
120        Sets the step in-between ticks on this axis. Use with `tick0`.
121        Must be a positive number, or special strings available to
122        "log" and "date" axes. If the axis `type` is "log", then ticks
123        are set every 10^(n*dtick) where n is the tick number. For
124        example, to set a tick mark at 1, 10, 100, 1000, ... set dtick
125        to 1. To set tick marks at 1, 100, 10000, ... set dtick to 2.
126        To set tick marks at 1, 5, 25, 125, 625, 3125, ... set dtick to
127        log_10(5), or 0.69897000433. "log" has several special values;
128        "L<f>", where `f` is a positive number, gives ticks linearly
129        spaced in value (but not position). For example `tick0` = 0.1,
130        `dtick` = "L0.5" will put ticks at 0.1, 0.6, 1.1, 1.6 etc. To
131        show powers of 10 plus small digits between, use "D1" (all
132        digits) or "D2" (only 2 and 5). `tick0` is ignored for "D1" and
133        "D2". If the axis `type` is "date", then you must convert the
134        time to milliseconds. For example, to set the interval between
135        ticks to one day, set `dtick` to 86400000.0. "date" also has
136        special values "M<n>" gives ticks spaced by a number of months.
137        `n` must be a positive integer. To set ticks on the 15th of
138        every third month, set `tick0` to "2000-01-15" and `dtick` to
139        "M3". To set ticks every 4 years, set `dtick` to "M48"
140
141        The 'dtick' property accepts values of any type
142
143        Returns
144        -------
145        Any
146        """
147        return self["dtick"]
148
149    @dtick.setter
150    def dtick(self, val):
151        self["dtick"] = val
152
153    # exponentformat
154    # --------------
155    @property
156    def exponentformat(self):
157        """
158        Determines a formatting rule for the tick exponents. For
159        example, consider the number 1,000,000,000. If "none", it
160        appears as 1,000,000,000. If "e", 1e+9. If "E", 1E+9. If
161        "power", 1x10^9 (with 9 in a super script). If "SI", 1G. If
162        "B", 1B.
163
164        The 'exponentformat' property is an enumeration that may be specified as:
165          - One of the following enumeration values:
166                ['none', 'e', 'E', 'power', 'SI', 'B']
167
168        Returns
169        -------
170        Any
171        """
172        return self["exponentformat"]
173
174    @exponentformat.setter
175    def exponentformat(self, val):
176        self["exponentformat"] = val
177
178    # gridcolor
179    # ---------
180    @property
181    def gridcolor(self):
182        """
183        Sets the color of the grid lines.
184
185        The 'gridcolor' property is a color and may be specified as:
186          - A hex string (e.g. '#ff0000')
187          - An rgb/rgba string (e.g. 'rgb(255,0,0)')
188          - An hsl/hsla string (e.g. 'hsl(0,100%,50%)')
189          - An hsv/hsva string (e.g. 'hsv(0,100%,100%)')
190          - A named CSS color:
191                aliceblue, antiquewhite, aqua, aquamarine, azure,
192                beige, bisque, black, blanchedalmond, blue,
193                blueviolet, brown, burlywood, cadetblue,
194                chartreuse, chocolate, coral, cornflowerblue,
195                cornsilk, crimson, cyan, darkblue, darkcyan,
196                darkgoldenrod, darkgray, darkgrey, darkgreen,
197                darkkhaki, darkmagenta, darkolivegreen, darkorange,
198                darkorchid, darkred, darksalmon, darkseagreen,
199                darkslateblue, darkslategray, darkslategrey,
200                darkturquoise, darkviolet, deeppink, deepskyblue,
201                dimgray, dimgrey, dodgerblue, firebrick,
202                floralwhite, forestgreen, fuchsia, gainsboro,
203                ghostwhite, gold, goldenrod, gray, grey, green,
204                greenyellow, honeydew, hotpink, indianred, indigo,
205                ivory, khaki, lavender, lavenderblush, lawngreen,
206                lemonchiffon, lightblue, lightcoral, lightcyan,
207                lightgoldenrodyellow, lightgray, lightgrey,
208                lightgreen, lightpink, lightsalmon, lightseagreen,
209                lightskyblue, lightslategray, lightslategrey,
210                lightsteelblue, lightyellow, lime, limegreen,
211                linen, magenta, maroon, mediumaquamarine,
212                mediumblue, mediumorchid, mediumpurple,
213                mediumseagreen, mediumslateblue, mediumspringgreen,
214                mediumturquoise, mediumvioletred, midnightblue,
215                mintcream, mistyrose, moccasin, navajowhite, navy,
216                oldlace, olive, olivedrab, orange, orangered,
217                orchid, palegoldenrod, palegreen, paleturquoise,
218                palevioletred, papayawhip, peachpuff, peru, pink,
219                plum, powderblue, purple, red, rosybrown,
220                royalblue, rebeccapurple, saddlebrown, salmon,
221                sandybrown, seagreen, seashell, sienna, silver,
222                skyblue, slateblue, slategray, slategrey, snow,
223                springgreen, steelblue, tan, teal, thistle, tomato,
224                turquoise, violet, wheat, white, whitesmoke,
225                yellow, yellowgreen
226
227        Returns
228        -------
229        str
230        """
231        return self["gridcolor"]
232
233    @gridcolor.setter
234    def gridcolor(self, val):
235        self["gridcolor"] = val
236
237    # gridwidth
238    # ---------
239    @property
240    def gridwidth(self):
241        """
242        Sets the width (in px) of the grid lines.
243
244        The 'gridwidth' property is a number and may be specified as:
245          - An int or float in the interval [0, inf]
246
247        Returns
248        -------
249        int|float
250        """
251        return self["gridwidth"]
252
253    @gridwidth.setter
254    def gridwidth(self, val):
255        self["gridwidth"] = val
256
257    # hoverformat
258    # -----------
259    @property
260    def hoverformat(self):
261        """
262        Sets the hover text formatting rule using d3 formatting mini-
263        languages which are very similar to those in Python. For
264        numbers, see: https://github.com/d3/d3-3.x-api-
265        reference/blob/master/Formatting.md#d3_format And for dates
266        see: https://github.com/d3/d3-time-format#locale_format We add
267        one item to d3's date formatter: "%{n}f" for fractional seconds
268        with n digits. For example, *2016-10-13 09:15:23.456* with
269        tickformat "%H~%M~%S.%2f" would display "09~15~23.46"
270
271        The 'hoverformat' property is a string and must be specified as:
272          - A string
273          - A number that will be converted to a string
274
275        Returns
276        -------
277        str
278        """
279        return self["hoverformat"]
280
281    @hoverformat.setter
282    def hoverformat(self, val):
283        self["hoverformat"] = val
284
285    # layer
286    # -----
287    @property
288    def layer(self):
289        """
290        Sets the layer on which this axis is displayed. If *above
291        traces*, this axis is displayed above all the subplot's traces
292        If *below traces*, this axis is displayed below all the
293        subplot's traces, but above the grid lines. Useful when used
294        together with scatter-like traces with `cliponaxis` set to
295        False to show markers and/or text nodes above this axis.
296
297        The 'layer' property is an enumeration that may be specified as:
298          - One of the following enumeration values:
299                ['above traces', 'below traces']
300
301        Returns
302        -------
303        Any
304        """
305        return self["layer"]
306
307    @layer.setter
308    def layer(self, val):
309        self["layer"] = val
310
311    # linecolor
312    # ---------
313    @property
314    def linecolor(self):
315        """
316        Sets the axis line color.
317
318        The 'linecolor' property is a color and may be specified as:
319          - A hex string (e.g. '#ff0000')
320          - An rgb/rgba string (e.g. 'rgb(255,0,0)')
321          - An hsl/hsla string (e.g. 'hsl(0,100%,50%)')
322          - An hsv/hsva string (e.g. 'hsv(0,100%,100%)')
323          - A named CSS color:
324                aliceblue, antiquewhite, aqua, aquamarine, azure,
325                beige, bisque, black, blanchedalmond, blue,
326                blueviolet, brown, burlywood, cadetblue,
327                chartreuse, chocolate, coral, cornflowerblue,
328                cornsilk, crimson, cyan, darkblue, darkcyan,
329                darkgoldenrod, darkgray, darkgrey, darkgreen,
330                darkkhaki, darkmagenta, darkolivegreen, darkorange,
331                darkorchid, darkred, darksalmon, darkseagreen,
332                darkslateblue, darkslategray, darkslategrey,
333                darkturquoise, darkviolet, deeppink, deepskyblue,
334                dimgray, dimgrey, dodgerblue, firebrick,
335                floralwhite, forestgreen, fuchsia, gainsboro,
336                ghostwhite, gold, goldenrod, gray, grey, green,
337                greenyellow, honeydew, hotpink, indianred, indigo,
338                ivory, khaki, lavender, lavenderblush, lawngreen,
339                lemonchiffon, lightblue, lightcoral, lightcyan,
340                lightgoldenrodyellow, lightgray, lightgrey,
341                lightgreen, lightpink, lightsalmon, lightseagreen,
342                lightskyblue, lightslategray, lightslategrey,
343                lightsteelblue, lightyellow, lime, limegreen,
344                linen, magenta, maroon, mediumaquamarine,
345                mediumblue, mediumorchid, mediumpurple,
346                mediumseagreen, mediumslateblue, mediumspringgreen,
347                mediumturquoise, mediumvioletred, midnightblue,
348                mintcream, mistyrose, moccasin, navajowhite, navy,
349                oldlace, olive, olivedrab, orange, orangered,
350                orchid, palegoldenrod, palegreen, paleturquoise,
351                palevioletred, papayawhip, peachpuff, peru, pink,
352                plum, powderblue, purple, red, rosybrown,
353                royalblue, rebeccapurple, saddlebrown, salmon,
354                sandybrown, seagreen, seashell, sienna, silver,
355                skyblue, slateblue, slategray, slategrey, snow,
356                springgreen, steelblue, tan, teal, thistle, tomato,
357                turquoise, violet, wheat, white, whitesmoke,
358                yellow, yellowgreen
359
360        Returns
361        -------
362        str
363        """
364        return self["linecolor"]
365
366    @linecolor.setter
367    def linecolor(self, val):
368        self["linecolor"] = val
369
370    # linewidth
371    # ---------
372    @property
373    def linewidth(self):
374        """
375        Sets the width (in px) of the axis line.
376
377        The 'linewidth' property is a number and may be specified as:
378          - An int or float in the interval [0, inf]
379
380        Returns
381        -------
382        int|float
383        """
384        return self["linewidth"]
385
386    @linewidth.setter
387    def linewidth(self, val):
388        self["linewidth"] = val
389
390    # min
391    # ---
392    @property
393    def min(self):
394        """
395        The minimum value visible on this axis. The maximum is
396        determined by the sum minus the minimum values of the other two
397        axes. The full view corresponds to all the minima set to zero.
398
399        The 'min' property is a number and may be specified as:
400          - An int or float in the interval [0, inf]
401
402        Returns
403        -------
404        int|float
405        """
406        return self["min"]
407
408    @min.setter
409    def min(self, val):
410        self["min"] = val
411
412    # minexponent
413    # -----------
414    @property
415    def minexponent(self):
416        """
417        Hide SI prefix for 10^n if |n| is below this number. This only
418        has an effect when `tickformat` is "SI" or "B".
419
420        The 'minexponent' property is a number and may be specified as:
421          - An int or float in the interval [0, inf]
422
423        Returns
424        -------
425        int|float
426        """
427        return self["minexponent"]
428
429    @minexponent.setter
430    def minexponent(self, val):
431        self["minexponent"] = val
432
433    # nticks
434    # ------
435    @property
436    def nticks(self):
437        """
438        Specifies the maximum number of ticks for the particular axis.
439        The actual number of ticks will be chosen automatically to be
440        less than or equal to `nticks`. Has an effect only if
441        `tickmode` is set to "auto".
442
443        The 'nticks' property is a integer and may be specified as:
444          - An int (or float that will be cast to an int)
445            in the interval [1, 9223372036854775807]
446
447        Returns
448        -------
449        int
450        """
451        return self["nticks"]
452
453    @nticks.setter
454    def nticks(self, val):
455        self["nticks"] = val
456
457    # separatethousands
458    # -----------------
459    @property
460    def separatethousands(self):
461        """
462        If "true", even 4-digit integers are separated
463
464        The 'separatethousands' property must be specified as a bool
465        (either True, or False)
466
467        Returns
468        -------
469        bool
470        """
471        return self["separatethousands"]
472
473    @separatethousands.setter
474    def separatethousands(self, val):
475        self["separatethousands"] = val
476
477    # showexponent
478    # ------------
479    @property
480    def showexponent(self):
481        """
482        If "all", all exponents are shown besides their significands.
483        If "first", only the exponent of the first tick is shown. If
484        "last", only the exponent of the last tick is shown. If "none",
485        no exponents appear.
486
487        The 'showexponent' property is an enumeration that may be specified as:
488          - One of the following enumeration values:
489                ['all', 'first', 'last', 'none']
490
491        Returns
492        -------
493        Any
494        """
495        return self["showexponent"]
496
497    @showexponent.setter
498    def showexponent(self, val):
499        self["showexponent"] = val
500
501    # showgrid
502    # --------
503    @property
504    def showgrid(self):
505        """
506        Determines whether or not grid lines are drawn. If True, the
507        grid lines are drawn at every tick mark.
508
509        The 'showgrid' property must be specified as a bool
510        (either True, or False)
511
512        Returns
513        -------
514        bool
515        """
516        return self["showgrid"]
517
518    @showgrid.setter
519    def showgrid(self, val):
520        self["showgrid"] = val
521
522    # showline
523    # --------
524    @property
525    def showline(self):
526        """
527        Determines whether or not a line bounding this axis is drawn.
528
529        The 'showline' property must be specified as a bool
530        (either True, or False)
531
532        Returns
533        -------
534        bool
535        """
536        return self["showline"]
537
538    @showline.setter
539    def showline(self, val):
540        self["showline"] = val
541
542    # showticklabels
543    # --------------
544    @property
545    def showticklabels(self):
546        """
547        Determines whether or not the tick labels are drawn.
548
549        The 'showticklabels' property must be specified as a bool
550        (either True, or False)
551
552        Returns
553        -------
554        bool
555        """
556        return self["showticklabels"]
557
558    @showticklabels.setter
559    def showticklabels(self, val):
560        self["showticklabels"] = val
561
562    # showtickprefix
563    # --------------
564    @property
565    def showtickprefix(self):
566        """
567        If "all", all tick labels are displayed with a prefix. If
568        "first", only the first tick is displayed with a prefix. If
569        "last", only the last tick is displayed with a suffix. If
570        "none", tick prefixes are hidden.
571
572        The 'showtickprefix' property is an enumeration that may be specified as:
573          - One of the following enumeration values:
574                ['all', 'first', 'last', 'none']
575
576        Returns
577        -------
578        Any
579        """
580        return self["showtickprefix"]
581
582    @showtickprefix.setter
583    def showtickprefix(self, val):
584        self["showtickprefix"] = val
585
586    # showticksuffix
587    # --------------
588    @property
589    def showticksuffix(self):
590        """
591        Same as `showtickprefix` but for tick suffixes.
592
593        The 'showticksuffix' property is an enumeration that may be specified as:
594          - One of the following enumeration values:
595                ['all', 'first', 'last', 'none']
596
597        Returns
598        -------
599        Any
600        """
601        return self["showticksuffix"]
602
603    @showticksuffix.setter
604    def showticksuffix(self, val):
605        self["showticksuffix"] = val
606
607    # tick0
608    # -----
609    @property
610    def tick0(self):
611        """
612        Sets the placement of the first tick on this axis. Use with
613        `dtick`. If the axis `type` is "log", then you must take the
614        log of your starting tick (e.g. to set the starting tick to
615        100, set the `tick0` to 2) except when `dtick`=*L<f>* (see
616        `dtick` for more info). If the axis `type` is "date", it should
617        be a date string, like date data. If the axis `type` is
618        "category", it should be a number, using the scale where each
619        category is assigned a serial number from zero in the order it
620        appears.
621
622        The 'tick0' property accepts values of any type
623
624        Returns
625        -------
626        Any
627        """
628        return self["tick0"]
629
630    @tick0.setter
631    def tick0(self, val):
632        self["tick0"] = val
633
634    # tickangle
635    # ---------
636    @property
637    def tickangle(self):
638        """
639        Sets the angle of the tick labels with respect to the
640        horizontal. For example, a `tickangle` of -90 draws the tick
641        labels vertically.
642
643        The 'tickangle' property is a angle (in degrees) that may be
644        specified as a number between -180 and 180. Numeric values outside this
645        range are converted to the equivalent value
646        (e.g. 270 is converted to -90).
647
648        Returns
649        -------
650        int|float
651        """
652        return self["tickangle"]
653
654    @tickangle.setter
655    def tickangle(self, val):
656        self["tickangle"] = val
657
658    # tickcolor
659    # ---------
660    @property
661    def tickcolor(self):
662        """
663        Sets the tick color.
664
665        The 'tickcolor' property is a color and may be specified as:
666          - A hex string (e.g. '#ff0000')
667          - An rgb/rgba string (e.g. 'rgb(255,0,0)')
668          - An hsl/hsla string (e.g. 'hsl(0,100%,50%)')
669          - An hsv/hsva string (e.g. 'hsv(0,100%,100%)')
670          - A named CSS color:
671                aliceblue, antiquewhite, aqua, aquamarine, azure,
672                beige, bisque, black, blanchedalmond, blue,
673                blueviolet, brown, burlywood, cadetblue,
674                chartreuse, chocolate, coral, cornflowerblue,
675                cornsilk, crimson, cyan, darkblue, darkcyan,
676                darkgoldenrod, darkgray, darkgrey, darkgreen,
677                darkkhaki, darkmagenta, darkolivegreen, darkorange,
678                darkorchid, darkred, darksalmon, darkseagreen,
679                darkslateblue, darkslategray, darkslategrey,
680                darkturquoise, darkviolet, deeppink, deepskyblue,
681                dimgray, dimgrey, dodgerblue, firebrick,
682                floralwhite, forestgreen, fuchsia, gainsboro,
683                ghostwhite, gold, goldenrod, gray, grey, green,
684                greenyellow, honeydew, hotpink, indianred, indigo,
685                ivory, khaki, lavender, lavenderblush, lawngreen,
686                lemonchiffon, lightblue, lightcoral, lightcyan,
687                lightgoldenrodyellow, lightgray, lightgrey,
688                lightgreen, lightpink, lightsalmon, lightseagreen,
689                lightskyblue, lightslategray, lightslategrey,
690                lightsteelblue, lightyellow, lime, limegreen,
691                linen, magenta, maroon, mediumaquamarine,
692                mediumblue, mediumorchid, mediumpurple,
693                mediumseagreen, mediumslateblue, mediumspringgreen,
694                mediumturquoise, mediumvioletred, midnightblue,
695                mintcream, mistyrose, moccasin, navajowhite, navy,
696                oldlace, olive, olivedrab, orange, orangered,
697                orchid, palegoldenrod, palegreen, paleturquoise,
698                palevioletred, papayawhip, peachpuff, peru, pink,
699                plum, powderblue, purple, red, rosybrown,
700                royalblue, rebeccapurple, saddlebrown, salmon,
701                sandybrown, seagreen, seashell, sienna, silver,
702                skyblue, slateblue, slategray, slategrey, snow,
703                springgreen, steelblue, tan, teal, thistle, tomato,
704                turquoise, violet, wheat, white, whitesmoke,
705                yellow, yellowgreen
706
707        Returns
708        -------
709        str
710        """
711        return self["tickcolor"]
712
713    @tickcolor.setter
714    def tickcolor(self, val):
715        self["tickcolor"] = val
716
717    # tickfont
718    # --------
719    @property
720    def tickfont(self):
721        """
722        Sets the tick font.
723
724        The 'tickfont' property is an instance of Tickfont
725        that may be specified as:
726          - An instance of :class:`plotly.graph_objs.layout.ternary.baxis.Tickfont`
727          - A dict of string/value properties that will be passed
728            to the Tickfont constructor
729
730            Supported dict properties:
731
732                color
733
734                family
735                    HTML font family - the typeface that will be
736                    applied by the web browser. The web browser
737                    will only be able to apply a font if it is
738                    available on the system which it operates.
739                    Provide multiple font families, separated by
740                    commas, to indicate the preference in which to
741                    apply fonts if they aren't available on the
742                    system. The Chart Studio Cloud (at
743                    https://chart-studio.plotly.com or on-premise)
744                    generates images on a server, where only a
745                    select number of fonts are installed and
746                    supported. These include "Arial", "Balto",
747                    "Courier New", "Droid Sans",, "Droid Serif",
748                    "Droid Sans Mono", "Gravitas One", "Old
749                    Standard TT", "Open Sans", "Overpass", "PT Sans
750                    Narrow", "Raleway", "Times New Roman".
751                size
752
753        Returns
754        -------
755        plotly.graph_objs.layout.ternary.baxis.Tickfont
756        """
757        return self["tickfont"]
758
759    @tickfont.setter
760    def tickfont(self, val):
761        self["tickfont"] = val
762
763    # tickformat
764    # ----------
765    @property
766    def tickformat(self):
767        """
768        Sets the tick label formatting rule using d3 formatting mini-
769        languages which are very similar to those in Python. For
770        numbers, see: https://github.com/d3/d3-3.x-api-
771        reference/blob/master/Formatting.md#d3_format And for dates
772        see: https://github.com/d3/d3-time-format#locale_format We add
773        one item to d3's date formatter: "%{n}f" for fractional seconds
774        with n digits. For example, *2016-10-13 09:15:23.456* with
775        tickformat "%H~%M~%S.%2f" would display "09~15~23.46"
776
777        The 'tickformat' property is a string and must be specified as:
778          - A string
779          - A number that will be converted to a string
780
781        Returns
782        -------
783        str
784        """
785        return self["tickformat"]
786
787    @tickformat.setter
788    def tickformat(self, val):
789        self["tickformat"] = val
790
791    # tickformatstops
792    # ---------------
793    @property
794    def tickformatstops(self):
795        """
796        The 'tickformatstops' property is a tuple of instances of
797        Tickformatstop that may be specified as:
798          - A list or tuple of instances of plotly.graph_objs.layout.ternary.baxis.Tickformatstop
799          - A list or tuple of dicts of string/value properties that
800            will be passed to the Tickformatstop constructor
801
802            Supported dict properties:
803
804                dtickrange
805                    range [*min*, *max*], where "min", "max" -
806                    dtick values which describe some zoom level, it
807                    is possible to omit "min" or "max" value by
808                    passing "null"
809                enabled
810                    Determines whether or not this stop is used. If
811                    `false`, this stop is ignored even within its
812                    `dtickrange`.
813                name
814                    When used in a template, named items are
815                    created in the output figure in addition to any
816                    items the figure already has in this array. You
817                    can modify these items in the output figure by
818                    making your own item with `templateitemname`
819                    matching this `name` alongside your
820                    modifications (including `visible: false` or
821                    `enabled: false` to hide it). Has no effect
822                    outside of a template.
823                templateitemname
824                    Used to refer to a named item in this array in
825                    the template. Named items from the template
826                    will be created even without a matching item in
827                    the input figure, but you can modify one by
828                    making an item with `templateitemname` matching
829                    its `name`, alongside your modifications
830                    (including `visible: false` or `enabled: false`
831                    to hide it). If there is no template or no
832                    matching item, this item will be hidden unless
833                    you explicitly show it with `visible: true`.
834                value
835                    string - dtickformat for described zoom level,
836                    the same as "tickformat"
837
838        Returns
839        -------
840        tuple[plotly.graph_objs.layout.ternary.baxis.Tickformatstop]
841        """
842        return self["tickformatstops"]
843
844    @tickformatstops.setter
845    def tickformatstops(self, val):
846        self["tickformatstops"] = val
847
848    # tickformatstopdefaults
849    # ----------------------
850    @property
851    def tickformatstopdefaults(self):
852        """
853        When used in a template (as
854        layout.template.layout.ternary.baxis.tickformatstopdefaults),
855        sets the default property values to use for elements of
856        layout.ternary.baxis.tickformatstops
857
858        The 'tickformatstopdefaults' property is an instance of Tickformatstop
859        that may be specified as:
860          - An instance of :class:`plotly.graph_objs.layout.ternary.baxis.Tickformatstop`
861          - A dict of string/value properties that will be passed
862            to the Tickformatstop constructor
863
864            Supported dict properties:
865
866        Returns
867        -------
868        plotly.graph_objs.layout.ternary.baxis.Tickformatstop
869        """
870        return self["tickformatstopdefaults"]
871
872    @tickformatstopdefaults.setter
873    def tickformatstopdefaults(self, val):
874        self["tickformatstopdefaults"] = val
875
876    # ticklen
877    # -------
878    @property
879    def ticklen(self):
880        """
881        Sets the tick length (in px).
882
883        The 'ticklen' property is a number and may be specified as:
884          - An int or float in the interval [0, inf]
885
886        Returns
887        -------
888        int|float
889        """
890        return self["ticklen"]
891
892    @ticklen.setter
893    def ticklen(self, val):
894        self["ticklen"] = val
895
896    # tickmode
897    # --------
898    @property
899    def tickmode(self):
900        """
901        Sets the tick mode for this axis. If "auto", the number of
902        ticks is set via `nticks`. If "linear", the placement of the
903        ticks is determined by a starting position `tick0` and a tick
904        step `dtick` ("linear" is the default value if `tick0` and
905        `dtick` are provided). If "array", the placement of the ticks
906        is set via `tickvals` and the tick text is `ticktext`. ("array"
907        is the default value if `tickvals` is provided).
908
909        The 'tickmode' property is an enumeration that may be specified as:
910          - One of the following enumeration values:
911                ['auto', 'linear', 'array']
912
913        Returns
914        -------
915        Any
916        """
917        return self["tickmode"]
918
919    @tickmode.setter
920    def tickmode(self, val):
921        self["tickmode"] = val
922
923    # tickprefix
924    # ----------
925    @property
926    def tickprefix(self):
927        """
928        Sets a tick label prefix.
929
930        The 'tickprefix' property is a string and must be specified as:
931          - A string
932          - A number that will be converted to a string
933
934        Returns
935        -------
936        str
937        """
938        return self["tickprefix"]
939
940    @tickprefix.setter
941    def tickprefix(self, val):
942        self["tickprefix"] = val
943
944    # ticks
945    # -----
946    @property
947    def ticks(self):
948        """
949        Determines whether ticks are drawn or not. If "", this axis'
950        ticks are not drawn. If "outside" ("inside"), this axis' are
951        drawn outside (inside) the axis lines.
952
953        The 'ticks' property is an enumeration that may be specified as:
954          - One of the following enumeration values:
955                ['outside', 'inside', '']
956
957        Returns
958        -------
959        Any
960        """
961        return self["ticks"]
962
963    @ticks.setter
964    def ticks(self, val):
965        self["ticks"] = val
966
967    # ticksuffix
968    # ----------
969    @property
970    def ticksuffix(self):
971        """
972        Sets a tick label suffix.
973
974        The 'ticksuffix' property is a string and must be specified as:
975          - A string
976          - A number that will be converted to a string
977
978        Returns
979        -------
980        str
981        """
982        return self["ticksuffix"]
983
984    @ticksuffix.setter
985    def ticksuffix(self, val):
986        self["ticksuffix"] = val
987
988    # ticktext
989    # --------
990    @property
991    def ticktext(self):
992        """
993        Sets the text displayed at the ticks position via `tickvals`.
994        Only has an effect if `tickmode` is set to "array". Used with
995        `tickvals`.
996
997        The 'ticktext' property is an array that may be specified as a tuple,
998        list, numpy array, or pandas Series
999
1000        Returns
1001        -------
1002        numpy.ndarray
1003        """
1004        return self["ticktext"]
1005
1006    @ticktext.setter
1007    def ticktext(self, val):
1008        self["ticktext"] = val
1009
1010    # ticktextsrc
1011    # -----------
1012    @property
1013    def ticktextsrc(self):
1014        """
1015        Sets the source reference on Chart Studio Cloud for  ticktext .
1016
1017        The 'ticktextsrc' property must be specified as a string or
1018        as a plotly.grid_objs.Column object
1019
1020        Returns
1021        -------
1022        str
1023        """
1024        return self["ticktextsrc"]
1025
1026    @ticktextsrc.setter
1027    def ticktextsrc(self, val):
1028        self["ticktextsrc"] = val
1029
1030    # tickvals
1031    # --------
1032    @property
1033    def tickvals(self):
1034        """
1035        Sets the values at which ticks on this axis appear. Only has an
1036        effect if `tickmode` is set to "array". Used with `ticktext`.
1037
1038        The 'tickvals' property is an array that may be specified as a tuple,
1039        list, numpy array, or pandas Series
1040
1041        Returns
1042        -------
1043        numpy.ndarray
1044        """
1045        return self["tickvals"]
1046
1047    @tickvals.setter
1048    def tickvals(self, val):
1049        self["tickvals"] = val
1050
1051    # tickvalssrc
1052    # -----------
1053    @property
1054    def tickvalssrc(self):
1055        """
1056        Sets the source reference on Chart Studio Cloud for  tickvals .
1057
1058        The 'tickvalssrc' property must be specified as a string or
1059        as a plotly.grid_objs.Column object
1060
1061        Returns
1062        -------
1063        str
1064        """
1065        return self["tickvalssrc"]
1066
1067    @tickvalssrc.setter
1068    def tickvalssrc(self, val):
1069        self["tickvalssrc"] = val
1070
1071    # tickwidth
1072    # ---------
1073    @property
1074    def tickwidth(self):
1075        """
1076        Sets the tick width (in px).
1077
1078        The 'tickwidth' property is a number and may be specified as:
1079          - An int or float in the interval [0, inf]
1080
1081        Returns
1082        -------
1083        int|float
1084        """
1085        return self["tickwidth"]
1086
1087    @tickwidth.setter
1088    def tickwidth(self, val):
1089        self["tickwidth"] = val
1090
1091    # title
1092    # -----
1093    @property
1094    def title(self):
1095        """
1096        The 'title' property is an instance of Title
1097        that may be specified as:
1098          - An instance of :class:`plotly.graph_objs.layout.ternary.baxis.Title`
1099          - A dict of string/value properties that will be passed
1100            to the Title constructor
1101
1102            Supported dict properties:
1103
1104                font
1105                    Sets this axis' title font. Note that the
1106                    title's font used to be customized by the now
1107                    deprecated `titlefont` attribute.
1108                text
1109                    Sets the title of this axis. Note that before
1110                    the existence of `title.text`, the title's
1111                    contents used to be defined as the `title`
1112                    attribute itself. This behavior has been
1113                    deprecated.
1114
1115        Returns
1116        -------
1117        plotly.graph_objs.layout.ternary.baxis.Title
1118        """
1119        return self["title"]
1120
1121    @title.setter
1122    def title(self, val):
1123        self["title"] = val
1124
1125    # titlefont
1126    # ---------
1127    @property
1128    def titlefont(self):
1129        """
1130        Deprecated: Please use layout.ternary.baxis.title.font instead.
1131        Sets this axis' title font. Note that the title's font used to
1132        be customized by the now deprecated `titlefont` attribute.
1133
1134        The 'font' property is an instance of Font
1135        that may be specified as:
1136          - An instance of :class:`plotly.graph_objs.layout.ternary.baxis.title.Font`
1137          - A dict of string/value properties that will be passed
1138            to the Font constructor
1139
1140            Supported dict properties:
1141
1142                color
1143
1144                family
1145                    HTML font family - the typeface that will be
1146                    applied by the web browser. The web browser
1147                    will only be able to apply a font if it is
1148                    available on the system which it operates.
1149                    Provide multiple font families, separated by
1150                    commas, to indicate the preference in which to
1151                    apply fonts if they aren't available on the
1152                    system. The Chart Studio Cloud (at
1153                    https://chart-studio.plotly.com or on-premise)
1154                    generates images on a server, where only a
1155                    select number of fonts are installed and
1156                    supported. These include "Arial", "Balto",
1157                    "Courier New", "Droid Sans",, "Droid Serif",
1158                    "Droid Sans Mono", "Gravitas One", "Old
1159                    Standard TT", "Open Sans", "Overpass", "PT Sans
1160                    Narrow", "Raleway", "Times New Roman".
1161                size
1162
1163        Returns
1164        -------
1165
1166        """
1167        return self["titlefont"]
1168
1169    @titlefont.setter
1170    def titlefont(self, val):
1171        self["titlefont"] = val
1172
1173    # uirevision
1174    # ----------
1175    @property
1176    def uirevision(self):
1177        """
1178        Controls persistence of user-driven changes in axis `min`, and
1179        `title` if in `editable: true` configuration. Defaults to
1180        `ternary<N>.uirevision`.
1181
1182        The 'uirevision' property accepts values of any type
1183
1184        Returns
1185        -------
1186        Any
1187        """
1188        return self["uirevision"]
1189
1190    @uirevision.setter
1191    def uirevision(self, val):
1192        self["uirevision"] = val
1193
1194    # Self properties description
1195    # ---------------------------
1196    @property
1197    def _prop_descriptions(self):
1198        return """\
1199        color
1200            Sets default for all colors associated with this axis
1201            all at once: line, font, tick, and grid colors. Grid
1202            color is lightened by blending this with the plot
1203            background Individual pieces can override this.
1204        dtick
1205            Sets the step in-between ticks on this axis. Use with
1206            `tick0`. Must be a positive number, or special strings
1207            available to "log" and "date" axes. If the axis `type`
1208            is "log", then ticks are set every 10^(n*dtick) where n
1209            is the tick number. For example, to set a tick mark at
1210            1, 10, 100, 1000, ... set dtick to 1. To set tick marks
1211            at 1, 100, 10000, ... set dtick to 2. To set tick marks
1212            at 1, 5, 25, 125, 625, 3125, ... set dtick to
1213            log_10(5), or 0.69897000433. "log" has several special
1214            values; "L<f>", where `f` is a positive number, gives
1215            ticks linearly spaced in value (but not position). For
1216            example `tick0` = 0.1, `dtick` = "L0.5" will put ticks
1217            at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus
1218            small digits between, use "D1" (all digits) or "D2"
1219            (only 2 and 5). `tick0` is ignored for "D1" and "D2".
1220            If the axis `type` is "date", then you must convert the
1221            time to milliseconds. For example, to set the interval
1222            between ticks to one day, set `dtick` to 86400000.0.
1223            "date" also has special values "M<n>" gives ticks
1224            spaced by a number of months. `n` must be a positive
1225            integer. To set ticks on the 15th of every third month,
1226            set `tick0` to "2000-01-15" and `dtick` to "M3". To set
1227            ticks every 4 years, set `dtick` to "M48"
1228        exponentformat
1229            Determines a formatting rule for the tick exponents.
1230            For example, consider the number 1,000,000,000. If
1231            "none", it appears as 1,000,000,000. If "e", 1e+9. If
1232            "E", 1E+9. If "power", 1x10^9 (with 9 in a super
1233            script). If "SI", 1G. If "B", 1B.
1234        gridcolor
1235            Sets the color of the grid lines.
1236        gridwidth
1237            Sets the width (in px) of the grid lines.
1238        hoverformat
1239            Sets the hover text formatting rule using d3 formatting
1240            mini-languages which are very similar to those in
1241            Python. For numbers, see:
1242            https://github.com/d3/d3-3.x-api-
1243            reference/blob/master/Formatting.md#d3_format And for
1244            dates see: https://github.com/d3/d3-time-
1245            format#locale_format We add one item to d3's date
1246            formatter: "%{n}f" for fractional seconds with n
1247            digits. For example, *2016-10-13 09:15:23.456* with
1248            tickformat "%H~%M~%S.%2f" would display "09~15~23.46"
1249        layer
1250            Sets the layer on which this axis is displayed. If
1251            *above traces*, this axis is displayed above all the
1252            subplot's traces If *below traces*, this axis is
1253            displayed below all the subplot's traces, but above the
1254            grid lines. Useful when used together with scatter-like
1255            traces with `cliponaxis` set to False to show markers
1256            and/or text nodes above this axis.
1257        linecolor
1258            Sets the axis line color.
1259        linewidth
1260            Sets the width (in px) of the axis line.
1261        min
1262            The minimum value visible on this axis. The maximum is
1263            determined by the sum minus the minimum values of the
1264            other two axes. The full view corresponds to all the
1265            minima set to zero.
1266        minexponent
1267            Hide SI prefix for 10^n if |n| is below this number.
1268            This only has an effect when `tickformat` is "SI" or
1269            "B".
1270        nticks
1271            Specifies the maximum number of ticks for the
1272            particular axis. The actual number of ticks will be
1273            chosen automatically to be less than or equal to
1274            `nticks`. Has an effect only if `tickmode` is set to
1275            "auto".
1276        separatethousands
1277            If "true", even 4-digit integers are separated
1278        showexponent
1279            If "all", all exponents are shown besides their
1280            significands. If "first", only the exponent of the
1281            first tick is shown. If "last", only the exponent of
1282            the last tick is shown. If "none", no exponents appear.
1283        showgrid
1284            Determines whether or not grid lines are drawn. If
1285            True, the grid lines are drawn at every tick mark.
1286        showline
1287            Determines whether or not a line bounding this axis is
1288            drawn.
1289        showticklabels
1290            Determines whether or not the tick labels are drawn.
1291        showtickprefix
1292            If "all", all tick labels are displayed with a prefix.
1293            If "first", only the first tick is displayed with a
1294            prefix. If "last", only the last tick is displayed with
1295            a suffix. If "none", tick prefixes are hidden.
1296        showticksuffix
1297            Same as `showtickprefix` but for tick suffixes.
1298        tick0
1299            Sets the placement of the first tick on this axis. Use
1300            with `dtick`. If the axis `type` is "log", then you
1301            must take the log of your starting tick (e.g. to set
1302            the starting tick to 100, set the `tick0` to 2) except
1303            when `dtick`=*L<f>* (see `dtick` for more info). If the
1304            axis `type` is "date", it should be a date string, like
1305            date data. If the axis `type` is "category", it should
1306            be a number, using the scale where each category is
1307            assigned a serial number from zero in the order it
1308            appears.
1309        tickangle
1310            Sets the angle of the tick labels with respect to the
1311            horizontal. For example, a `tickangle` of -90 draws the
1312            tick labels vertically.
1313        tickcolor
1314            Sets the tick color.
1315        tickfont
1316            Sets the tick font.
1317        tickformat
1318            Sets the tick label formatting rule using d3 formatting
1319            mini-languages which are very similar to those in
1320            Python. For numbers, see:
1321            https://github.com/d3/d3-3.x-api-
1322            reference/blob/master/Formatting.md#d3_format And for
1323            dates see: https://github.com/d3/d3-time-
1324            format#locale_format We add one item to d3's date
1325            formatter: "%{n}f" for fractional seconds with n
1326            digits. For example, *2016-10-13 09:15:23.456* with
1327            tickformat "%H~%M~%S.%2f" would display "09~15~23.46"
1328        tickformatstops
1329            A tuple of :class:`plotly.graph_objects.layout.ternary.
1330            baxis.Tickformatstop` instances or dicts with
1331            compatible properties
1332        tickformatstopdefaults
1333            When used in a template (as layout.template.layout.tern
1334            ary.baxis.tickformatstopdefaults), sets the default
1335            property values to use for elements of
1336            layout.ternary.baxis.tickformatstops
1337        ticklen
1338            Sets the tick length (in px).
1339        tickmode
1340            Sets the tick mode for this axis. If "auto", the number
1341            of ticks is set via `nticks`. If "linear", the
1342            placement of the ticks is determined by a starting
1343            position `tick0` and a tick step `dtick` ("linear" is
1344            the default value if `tick0` and `dtick` are provided).
1345            If "array", the placement of the ticks is set via
1346            `tickvals` and the tick text is `ticktext`. ("array" is
1347            the default value if `tickvals` is provided).
1348        tickprefix
1349            Sets a tick label prefix.
1350        ticks
1351            Determines whether ticks are drawn or not. If "", this
1352            axis' ticks are not drawn. If "outside" ("inside"),
1353            this axis' are drawn outside (inside) the axis lines.
1354        ticksuffix
1355            Sets a tick label suffix.
1356        ticktext
1357            Sets the text displayed at the ticks position via
1358            `tickvals`. Only has an effect if `tickmode` is set to
1359            "array". Used with `tickvals`.
1360        ticktextsrc
1361            Sets the source reference on Chart Studio Cloud for
1362            ticktext .
1363        tickvals
1364            Sets the values at which ticks on this axis appear.
1365            Only has an effect if `tickmode` is set to "array".
1366            Used with `ticktext`.
1367        tickvalssrc
1368            Sets the source reference on Chart Studio Cloud for
1369            tickvals .
1370        tickwidth
1371            Sets the tick width (in px).
1372        title
1373            :class:`plotly.graph_objects.layout.ternary.baxis.Title
1374            ` instance or dict with compatible properties
1375        titlefont
1376            Deprecated: Please use layout.ternary.baxis.title.font
1377            instead. Sets this axis' title font. Note that the
1378            title's font used to be customized by the now
1379            deprecated `titlefont` attribute.
1380        uirevision
1381            Controls persistence of user-driven changes in axis
1382            `min`, and `title` if in `editable: true`
1383            configuration. Defaults to `ternary<N>.uirevision`.
1384        """
1385
1386    _mapped_properties = {"titlefont": ("title", "font")}
1387
1388    def __init__(
1389        self,
1390        arg=None,
1391        color=None,
1392        dtick=None,
1393        exponentformat=None,
1394        gridcolor=None,
1395        gridwidth=None,
1396        hoverformat=None,
1397        layer=None,
1398        linecolor=None,
1399        linewidth=None,
1400        min=None,
1401        minexponent=None,
1402        nticks=None,
1403        separatethousands=None,
1404        showexponent=None,
1405        showgrid=None,
1406        showline=None,
1407        showticklabels=None,
1408        showtickprefix=None,
1409        showticksuffix=None,
1410        tick0=None,
1411        tickangle=None,
1412        tickcolor=None,
1413        tickfont=None,
1414        tickformat=None,
1415        tickformatstops=None,
1416        tickformatstopdefaults=None,
1417        ticklen=None,
1418        tickmode=None,
1419        tickprefix=None,
1420        ticks=None,
1421        ticksuffix=None,
1422        ticktext=None,
1423        ticktextsrc=None,
1424        tickvals=None,
1425        tickvalssrc=None,
1426        tickwidth=None,
1427        title=None,
1428        titlefont=None,
1429        uirevision=None,
1430        **kwargs
1431    ):
1432        """
1433        Construct a new Baxis object
1434
1435        Parameters
1436        ----------
1437        arg
1438            dict of properties compatible with this constructor or
1439            an instance of
1440            :class:`plotly.graph_objs.layout.ternary.Baxis`
1441        color
1442            Sets default for all colors associated with this axis
1443            all at once: line, font, tick, and grid colors. Grid
1444            color is lightened by blending this with the plot
1445            background Individual pieces can override this.
1446        dtick
1447            Sets the step in-between ticks on this axis. Use with
1448            `tick0`. Must be a positive number, or special strings
1449            available to "log" and "date" axes. If the axis `type`
1450            is "log", then ticks are set every 10^(n*dtick) where n
1451            is the tick number. For example, to set a tick mark at
1452            1, 10, 100, 1000, ... set dtick to 1. To set tick marks
1453            at 1, 100, 10000, ... set dtick to 2. To set tick marks
1454            at 1, 5, 25, 125, 625, 3125, ... set dtick to
1455            log_10(5), or 0.69897000433. "log" has several special
1456            values; "L<f>", where `f` is a positive number, gives
1457            ticks linearly spaced in value (but not position). For
1458            example `tick0` = 0.1, `dtick` = "L0.5" will put ticks
1459            at 0.1, 0.6, 1.1, 1.6 etc. To show powers of 10 plus
1460            small digits between, use "D1" (all digits) or "D2"
1461            (only 2 and 5). `tick0` is ignored for "D1" and "D2".
1462            If the axis `type` is "date", then you must convert the
1463            time to milliseconds. For example, to set the interval
1464            between ticks to one day, set `dtick` to 86400000.0.
1465            "date" also has special values "M<n>" gives ticks
1466            spaced by a number of months. `n` must be a positive
1467            integer. To set ticks on the 15th of every third month,
1468            set `tick0` to "2000-01-15" and `dtick` to "M3". To set
1469            ticks every 4 years, set `dtick` to "M48"
1470        exponentformat
1471            Determines a formatting rule for the tick exponents.
1472            For example, consider the number 1,000,000,000. If
1473            "none", it appears as 1,000,000,000. If "e", 1e+9. If
1474            "E", 1E+9. If "power", 1x10^9 (with 9 in a super
1475            script). If "SI", 1G. If "B", 1B.
1476        gridcolor
1477            Sets the color of the grid lines.
1478        gridwidth
1479            Sets the width (in px) of the grid lines.
1480        hoverformat
1481            Sets the hover text formatting rule using d3 formatting
1482            mini-languages which are very similar to those in
1483            Python. For numbers, see:
1484            https://github.com/d3/d3-3.x-api-
1485            reference/blob/master/Formatting.md#d3_format And for
1486            dates see: https://github.com/d3/d3-time-
1487            format#locale_format We add one item to d3's date
1488            formatter: "%{n}f" for fractional seconds with n
1489            digits. For example, *2016-10-13 09:15:23.456* with
1490            tickformat "%H~%M~%S.%2f" would display "09~15~23.46"
1491        layer
1492            Sets the layer on which this axis is displayed. If
1493            *above traces*, this axis is displayed above all the
1494            subplot's traces If *below traces*, this axis is
1495            displayed below all the subplot's traces, but above the
1496            grid lines. Useful when used together with scatter-like
1497            traces with `cliponaxis` set to False to show markers
1498            and/or text nodes above this axis.
1499        linecolor
1500            Sets the axis line color.
1501        linewidth
1502            Sets the width (in px) of the axis line.
1503        min
1504            The minimum value visible on this axis. The maximum is
1505            determined by the sum minus the minimum values of the
1506            other two axes. The full view corresponds to all the
1507            minima set to zero.
1508        minexponent
1509            Hide SI prefix for 10^n if |n| is below this number.
1510            This only has an effect when `tickformat` is "SI" or
1511            "B".
1512        nticks
1513            Specifies the maximum number of ticks for the
1514            particular axis. The actual number of ticks will be
1515            chosen automatically to be less than or equal to
1516            `nticks`. Has an effect only if `tickmode` is set to
1517            "auto".
1518        separatethousands
1519            If "true", even 4-digit integers are separated
1520        showexponent
1521            If "all", all exponents are shown besides their
1522            significands. If "first", only the exponent of the
1523            first tick is shown. If "last", only the exponent of
1524            the last tick is shown. If "none", no exponents appear.
1525        showgrid
1526            Determines whether or not grid lines are drawn. If
1527            True, the grid lines are drawn at every tick mark.
1528        showline
1529            Determines whether or not a line bounding this axis is
1530            drawn.
1531        showticklabels
1532            Determines whether or not the tick labels are drawn.
1533        showtickprefix
1534            If "all", all tick labels are displayed with a prefix.
1535            If "first", only the first tick is displayed with a
1536            prefix. If "last", only the last tick is displayed with
1537            a suffix. If "none", tick prefixes are hidden.
1538        showticksuffix
1539            Same as `showtickprefix` but for tick suffixes.
1540        tick0
1541            Sets the placement of the first tick on this axis. Use
1542            with `dtick`. If the axis `type` is "log", then you
1543            must take the log of your starting tick (e.g. to set
1544            the starting tick to 100, set the `tick0` to 2) except
1545            when `dtick`=*L<f>* (see `dtick` for more info). If the
1546            axis `type` is "date", it should be a date string, like
1547            date data. If the axis `type` is "category", it should
1548            be a number, using the scale where each category is
1549            assigned a serial number from zero in the order it
1550            appears.
1551        tickangle
1552            Sets the angle of the tick labels with respect to the
1553            horizontal. For example, a `tickangle` of -90 draws the
1554            tick labels vertically.
1555        tickcolor
1556            Sets the tick color.
1557        tickfont
1558            Sets the tick font.
1559        tickformat
1560            Sets the tick label formatting rule using d3 formatting
1561            mini-languages which are very similar to those in
1562            Python. For numbers, see:
1563            https://github.com/d3/d3-3.x-api-
1564            reference/blob/master/Formatting.md#d3_format And for
1565            dates see: https://github.com/d3/d3-time-
1566            format#locale_format We add one item to d3's date
1567            formatter: "%{n}f" for fractional seconds with n
1568            digits. For example, *2016-10-13 09:15:23.456* with
1569            tickformat "%H~%M~%S.%2f" would display "09~15~23.46"
1570        tickformatstops
1571            A tuple of :class:`plotly.graph_objects.layout.ternary.
1572            baxis.Tickformatstop` instances or dicts with
1573            compatible properties
1574        tickformatstopdefaults
1575            When used in a template (as layout.template.layout.tern
1576            ary.baxis.tickformatstopdefaults), sets the default
1577            property values to use for elements of
1578            layout.ternary.baxis.tickformatstops
1579        ticklen
1580            Sets the tick length (in px).
1581        tickmode
1582            Sets the tick mode for this axis. If "auto", the number
1583            of ticks is set via `nticks`. If "linear", the
1584            placement of the ticks is determined by a starting
1585            position `tick0` and a tick step `dtick` ("linear" is
1586            the default value if `tick0` and `dtick` are provided).
1587            If "array", the placement of the ticks is set via
1588            `tickvals` and the tick text is `ticktext`. ("array" is
1589            the default value if `tickvals` is provided).
1590        tickprefix
1591            Sets a tick label prefix.
1592        ticks
1593            Determines whether ticks are drawn or not. If "", this
1594            axis' ticks are not drawn. If "outside" ("inside"),
1595            this axis' are drawn outside (inside) the axis lines.
1596        ticksuffix
1597            Sets a tick label suffix.
1598        ticktext
1599            Sets the text displayed at the ticks position via
1600            `tickvals`. Only has an effect if `tickmode` is set to
1601            "array". Used with `tickvals`.
1602        ticktextsrc
1603            Sets the source reference on Chart Studio Cloud for
1604            ticktext .
1605        tickvals
1606            Sets the values at which ticks on this axis appear.
1607            Only has an effect if `tickmode` is set to "array".
1608            Used with `ticktext`.
1609        tickvalssrc
1610            Sets the source reference on Chart Studio Cloud for
1611            tickvals .
1612        tickwidth
1613            Sets the tick width (in px).
1614        title
1615            :class:`plotly.graph_objects.layout.ternary.baxis.Title
1616            ` instance or dict with compatible properties
1617        titlefont
1618            Deprecated: Please use layout.ternary.baxis.title.font
1619            instead. Sets this axis' title font. Note that the
1620            title's font used to be customized by the now
1621            deprecated `titlefont` attribute.
1622        uirevision
1623            Controls persistence of user-driven changes in axis
1624            `min`, and `title` if in `editable: true`
1625            configuration. Defaults to `ternary<N>.uirevision`.
1626
1627        Returns
1628        -------
1629        Baxis
1630        """
1631        super(Baxis, self).__init__("baxis")
1632
1633        if "_parent" in kwargs:
1634            self._parent = kwargs["_parent"]
1635            return
1636
1637        # Validate arg
1638        # ------------
1639        if arg is None:
1640            arg = {}
1641        elif isinstance(arg, self.__class__):
1642            arg = arg.to_plotly_json()
1643        elif isinstance(arg, dict):
1644            arg = _copy.copy(arg)
1645        else:
1646            raise ValueError(
1647                """\
1648The first argument to the plotly.graph_objs.layout.ternary.Baxis
1649constructor must be a dict or
1650an instance of :class:`plotly.graph_objs.layout.ternary.Baxis`"""
1651            )
1652
1653        # Handle skip_invalid
1654        # -------------------
1655        self._skip_invalid = kwargs.pop("skip_invalid", False)
1656        self._validate = kwargs.pop("_validate", True)
1657
1658        # Populate data dict with properties
1659        # ----------------------------------
1660        _v = arg.pop("color", None)
1661        _v = color if color is not None else _v
1662        if _v is not None:
1663            self["color"] = _v
1664        _v = arg.pop("dtick", None)
1665        _v = dtick if dtick is not None else _v
1666        if _v is not None:
1667            self["dtick"] = _v
1668        _v = arg.pop("exponentformat", None)
1669        _v = exponentformat if exponentformat is not None else _v
1670        if _v is not None:
1671            self["exponentformat"] = _v
1672        _v = arg.pop("gridcolor", None)
1673        _v = gridcolor if gridcolor is not None else _v
1674        if _v is not None:
1675            self["gridcolor"] = _v
1676        _v = arg.pop("gridwidth", None)
1677        _v = gridwidth if gridwidth is not None else _v
1678        if _v is not None:
1679            self["gridwidth"] = _v
1680        _v = arg.pop("hoverformat", None)
1681        _v = hoverformat if hoverformat is not None else _v
1682        if _v is not None:
1683            self["hoverformat"] = _v
1684        _v = arg.pop("layer", None)
1685        _v = layer if layer is not None else _v
1686        if _v is not None:
1687            self["layer"] = _v
1688        _v = arg.pop("linecolor", None)
1689        _v = linecolor if linecolor is not None else _v
1690        if _v is not None:
1691            self["linecolor"] = _v
1692        _v = arg.pop("linewidth", None)
1693        _v = linewidth if linewidth is not None else _v
1694        if _v is not None:
1695            self["linewidth"] = _v
1696        _v = arg.pop("min", None)
1697        _v = min if min is not None else _v
1698        if _v is not None:
1699            self["min"] = _v
1700        _v = arg.pop("minexponent", None)
1701        _v = minexponent if minexponent is not None else _v
1702        if _v is not None:
1703            self["minexponent"] = _v
1704        _v = arg.pop("nticks", None)
1705        _v = nticks if nticks is not None else _v
1706        if _v is not None:
1707            self["nticks"] = _v
1708        _v = arg.pop("separatethousands", None)
1709        _v = separatethousands if separatethousands is not None else _v
1710        if _v is not None:
1711            self["separatethousands"] = _v
1712        _v = arg.pop("showexponent", None)
1713        _v = showexponent if showexponent is not None else _v
1714        if _v is not None:
1715            self["showexponent"] = _v
1716        _v = arg.pop("showgrid", None)
1717        _v = showgrid if showgrid is not None else _v
1718        if _v is not None:
1719            self["showgrid"] = _v
1720        _v = arg.pop("showline", None)
1721        _v = showline if showline is not None else _v
1722        if _v is not None:
1723            self["showline"] = _v
1724        _v = arg.pop("showticklabels", None)
1725        _v = showticklabels if showticklabels is not None else _v
1726        if _v is not None:
1727            self["showticklabels"] = _v
1728        _v = arg.pop("showtickprefix", None)
1729        _v = showtickprefix if showtickprefix is not None else _v
1730        if _v is not None:
1731            self["showtickprefix"] = _v
1732        _v = arg.pop("showticksuffix", None)
1733        _v = showticksuffix if showticksuffix is not None else _v
1734        if _v is not None:
1735            self["showticksuffix"] = _v
1736        _v = arg.pop("tick0", None)
1737        _v = tick0 if tick0 is not None else _v
1738        if _v is not None:
1739            self["tick0"] = _v
1740        _v = arg.pop("tickangle", None)
1741        _v = tickangle if tickangle is not None else _v
1742        if _v is not None:
1743            self["tickangle"] = _v
1744        _v = arg.pop("tickcolor", None)
1745        _v = tickcolor if tickcolor is not None else _v
1746        if _v is not None:
1747            self["tickcolor"] = _v
1748        _v = arg.pop("tickfont", None)
1749        _v = tickfont if tickfont is not None else _v
1750        if _v is not None:
1751            self["tickfont"] = _v
1752        _v = arg.pop("tickformat", None)
1753        _v = tickformat if tickformat is not None else _v
1754        if _v is not None:
1755            self["tickformat"] = _v
1756        _v = arg.pop("tickformatstops", None)
1757        _v = tickformatstops if tickformatstops is not None else _v
1758        if _v is not None:
1759            self["tickformatstops"] = _v
1760        _v = arg.pop("tickformatstopdefaults", None)
1761        _v = tickformatstopdefaults if tickformatstopdefaults is not None else _v
1762        if _v is not None:
1763            self["tickformatstopdefaults"] = _v
1764        _v = arg.pop("ticklen", None)
1765        _v = ticklen if ticklen is not None else _v
1766        if _v is not None:
1767            self["ticklen"] = _v
1768        _v = arg.pop("tickmode", None)
1769        _v = tickmode if tickmode is not None else _v
1770        if _v is not None:
1771            self["tickmode"] = _v
1772        _v = arg.pop("tickprefix", None)
1773        _v = tickprefix if tickprefix is not None else _v
1774        if _v is not None:
1775            self["tickprefix"] = _v
1776        _v = arg.pop("ticks", None)
1777        _v = ticks if ticks is not None else _v
1778        if _v is not None:
1779            self["ticks"] = _v
1780        _v = arg.pop("ticksuffix", None)
1781        _v = ticksuffix if ticksuffix is not None else _v
1782        if _v is not None:
1783            self["ticksuffix"] = _v
1784        _v = arg.pop("ticktext", None)
1785        _v = ticktext if ticktext is not None else _v
1786        if _v is not None:
1787            self["ticktext"] = _v
1788        _v = arg.pop("ticktextsrc", None)
1789        _v = ticktextsrc if ticktextsrc is not None else _v
1790        if _v is not None:
1791            self["ticktextsrc"] = _v
1792        _v = arg.pop("tickvals", None)
1793        _v = tickvals if tickvals is not None else _v
1794        if _v is not None:
1795            self["tickvals"] = _v
1796        _v = arg.pop("tickvalssrc", None)
1797        _v = tickvalssrc if tickvalssrc is not None else _v
1798        if _v is not None:
1799            self["tickvalssrc"] = _v
1800        _v = arg.pop("tickwidth", None)
1801        _v = tickwidth if tickwidth is not None else _v
1802        if _v is not None:
1803            self["tickwidth"] = _v
1804        _v = arg.pop("title", None)
1805        _v = title if title is not None else _v
1806        if _v is not None:
1807            self["title"] = _v
1808        _v = arg.pop("titlefont", None)
1809        _v = titlefont if titlefont is not None else _v
1810        if _v is not None:
1811            self["titlefont"] = _v
1812        _v = arg.pop("uirevision", None)
1813        _v = uirevision if uirevision is not None else _v
1814        if _v is not None:
1815            self["uirevision"] = _v
1816
1817        # Process unknown kwargs
1818        # ----------------------
1819        self._process_kwargs(**dict(arg, **kwargs))
1820
1821        # Reset skip_invalid
1822        # ------------------
1823        self._skip_invalid = False
1824