Skip to content

Commit 91bcd07

Browse files
committed
Have px honor the symbol sequence and line dash sequence from template
if one is present
1 parent d23a90f commit 91bcd07

File tree

1 file changed

+33
-4
lines changed
  • packages/python/plotly/plotly/express

1 file changed

+33
-4
lines changed

packages/python/plotly/plotly/express/_core.py

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,8 @@ def __init__(self):
1919
self.height = 600
2020
self.color_discrete_sequence = None
2121
self.color_continuous_scale = None
22-
self.symbol_sequence = ["circle", "diamond", "square", "x", "cross"]
23-
self.line_dash_sequence = ["solid", "dot", "dash", "longdash", "dashdot"] + [
24-
"longdashdot"
25-
]
22+
self.symbol_sequence = None
23+
self.line_dash_sequence = None
2624
self.size_max = 20
2725

2826

@@ -673,6 +671,37 @@ def apply_default_cascade(args):
673671
if args["color_discrete_sequence"] is None:
674672
args["color_discrete_sequence"] = qualitative.D3
675673

674+
# if symbol_sequence/line_dash_sequence not set explicitly or in px.defaults,
675+
# see if we can defer to template. If not, set reasonable defaults
676+
if "symbol_sequence" in args:
677+
if args["symbol_sequence"] is None:
678+
try:
679+
args["symbol_sequence"] = [
680+
scatter.marker.symbol for scatter in template.data.scatter
681+
]
682+
except (AttributeError, TypeError):
683+
pass
684+
if not args["symbol_sequence"] or not any(args["symbol_sequence"]):
685+
args["symbol_sequence"] = ["circle", "diamond", "square", "x", "cross"]
686+
687+
if "line_dash_sequence" in args:
688+
if args["line_dash_sequence"] is None:
689+
try:
690+
args["line_dash_sequence"] = [
691+
scatter.line.dash for scatter in template.data.scatter
692+
]
693+
except (AttributeError, TypeError):
694+
pass
695+
if not args["line_dash_sequence"] or not any(args["line_dash_sequence"]):
696+
args["line_dash_sequence"] = [
697+
"solid",
698+
"dot",
699+
"dash",
700+
"longdash",
701+
"dashdot",
702+
"longdashdot",
703+
]
704+
676705
# If both marginals and faceting are specified, faceting wins
677706
if args.get("facet_col", None) and args.get("marginal_y", None):
678707
args["marginal_y"] = None

0 commit comments

Comments
 (0)