Skip to content

Commit 2e2444f

Browse files
committed
continuous color scale for sunburst and treemap
1 parent 6c5313b commit 2e2444f

File tree

3 files changed

+50
-1
lines changed

3 files changed

+50
-1
lines changed

packages/python/plotly/plotly/express/_chart_types.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1121,6 +1121,10 @@ def pie(
11211121
data_frame=None,
11221122
names=None,
11231123
values=None,
1124+
color=None,
1125+
color_continuous_scale=None,
1126+
range_color=None,
1127+
color_continuous_midpoint=None,
11241128
textinfo=None,
11251129
hover_name=None,
11261130
hover_data=None,
@@ -1160,6 +1164,10 @@ def sunburst(
11601164
values=None,
11611165
parents=None,
11621166
ids=None,
1167+
color=None,
1168+
color_continuous_scale=None,
1169+
range_color=None,
1170+
color_continuous_midpoint=None,
11631171
hover_name=None,
11641172
hover_data=None,
11651173
custom_data=None,
@@ -1191,6 +1199,10 @@ def treemap(
11911199
values=None,
11921200
parents=None,
11931201
ids=None,
1202+
color=None,
1203+
color_continuous_scale=None,
1204+
range_color=None,
1205+
color_continuous_midpoint=None,
11941206
hover_name=None,
11951207
hover_data=None,
11961208
custom_data=None,
@@ -1272,7 +1284,9 @@ def funnel_area(
12721284
"""
12731285
In a funnel area plot, each row of `data_frame` is represented as a trapezoidal sector of a funnel.
12741286
"""
1275-
return make_figure(args=locals(), constructor=go.Funnelarea,)
1287+
return make_figure(
1288+
args=locals(), constructor=go.Funnelarea, trace_patch=dict(showlegend=True)
1289+
)
12761290

12771291

12781292
funnel_area.__doc__ = make_docstring(

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -291,6 +291,13 @@ def make_trace_kwargs(args, trace_spec, g, mapping_labels, sizeref):
291291
result["z"] = g[v]
292292
result["coloraxis"] = "coloraxis1"
293293
mapping_labels[v_label] = "%{z}"
294+
elif trace_spec.constructor in [go.Sunburst, go.Treemap]:
295+
colorable = "marker"
296+
if colorable not in result:
297+
result[colorable] = dict()
298+
result[colorable]["colors"] = g[v]
299+
result[colorable]["coloraxis"] = "coloraxis1"
300+
mapping_labels[v_label] = "%{color}"
294301
else:
295302
colorable = "marker"
296303
if trace_spec.constructor in [go.Parcats, go.Parcoords]:

packages/python/plotly/plotly/tests/test_core/test_px/test_px_functions.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,3 +50,31 @@ def test_pie_like_px():
5050
fig = px.funnel_area(values=y, names=x)
5151
trace = go.Funnelarea(values=y, labels=x)
5252
_compare_figures(trace, fig)
53+
54+
55+
def test_pie_like_colors():
56+
labels = ["Eve", "Cain", "Seth", "Enos", "Noam", "Abel", "Awan", "Enoch", "Azura"]
57+
parents = ["", "Eve", "Eve", "Seth", "Seth", "Eve", "Eve", "Awan", "Eve"]
58+
values = [10, 14, 12, 10, 2, 6, 6, 4, 4]
59+
# Sunburst
60+
fig = px.sunburst(
61+
names=labels,
62+
parents=parents,
63+
values=values,
64+
color=values,
65+
color_continuous_scale="Viridis",
66+
range_color=(5, 15),
67+
)
68+
assert fig.layout.coloraxis.cmin, fig.layout.coloraxis.cmax == (5, 15)
69+
assert fig.layout.coloraxis.colorscale[0] == (0.0, "#440154")
70+
# Treemap
71+
fig = px.treemap(
72+
names=labels,
73+
parents=parents,
74+
values=values,
75+
color=values,
76+
color_continuous_scale="Viridis",
77+
range_color=(5, 15),
78+
)
79+
assert fig.layout.coloraxis.cmin, fig.layout.coloraxis.cmax == (5, 15)
80+
assert fig.layout.coloraxis.colorscale[0] == (0.0, "#440154")

0 commit comments

Comments
 (0)