Skip to content
This repository was archived by the owner on Jun 3, 2024. It is now read-only.

Commit 06f1abd

Browse files
committed
Support implicit dataframe argument.
1 parent 1d2732c commit 06f1abd

File tree

2 files changed

+50
-27
lines changed

2 files changed

+50
-27
lines changed

plotly_express/_chart_types.py

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55

66
def scatter(
7-
data_frame,
7+
data_frame=None,
88
x=None,
99
y=None,
1010
color=None,
@@ -56,7 +56,7 @@ def scatter(
5656

5757

5858
def density_contour(
59-
data_frame,
59+
data_frame=None,
6060
x=None,
6161
y=None,
6262
z=None,
@@ -166,7 +166,7 @@ def density_heatmap(
166166

167167

168168
def line(
169-
data_frame,
169+
data_frame=None,
170170
x=None,
171171
y=None,
172172
line_group=None,
@@ -210,7 +210,7 @@ def line(
210210

211211

212212
def area(
213-
data_frame,
213+
data_frame=None,
214214
x=None,
215215
y=None,
216216
line_group=None,
@@ -254,7 +254,7 @@ def area(
254254

255255

256256
def bar(
257-
data_frame,
257+
data_frame=None,
258258
x=None,
259259
y=None,
260260
color=None,
@@ -303,7 +303,7 @@ def bar(
303303

304304

305305
def histogram(
306-
data_frame,
306+
data_frame=None,
307307
x=None,
308308
y=None,
309309
color=None,
@@ -360,7 +360,7 @@ def histogram(
360360

361361

362362
def violin(
363-
data_frame,
363+
data_frame=None,
364364
x=None,
365365
y=None,
366366
color=None,
@@ -410,7 +410,7 @@ def violin(
410410

411411

412412
def box(
413-
data_frame,
413+
data_frame=None,
414414
x=None,
415415
y=None,
416416
color=None,
@@ -504,7 +504,7 @@ def strip(
504504

505505

506506
def scatter_3d(
507-
data_frame,
507+
data_frame=None,
508508
x=None,
509509
y=None,
510510
z=None,
@@ -554,7 +554,7 @@ def scatter_3d(
554554

555555

556556
def line_3d(
557-
data_frame,
557+
data_frame=None,
558558
x=None,
559559
y=None,
560560
z=None,
@@ -599,7 +599,7 @@ def line_3d(
599599

600600

601601
def scatter_ternary(
602-
data_frame,
602+
data_frame=None,
603603
a=None,
604604
b=None,
605605
c=None,
@@ -637,7 +637,7 @@ def scatter_ternary(
637637

638638

639639
def line_ternary(
640-
data_frame,
640+
data_frame=None,
641641
a=None,
642642
b=None,
643643
c=None,
@@ -671,7 +671,7 @@ def line_ternary(
671671

672672

673673
def scatter_polar(
674-
data_frame,
674+
data_frame=None,
675675
r=None,
676676
theta=None,
677677
color=None,
@@ -714,7 +714,7 @@ def scatter_polar(
714714

715715

716716
def line_polar(
717-
data_frame,
717+
data_frame=None,
718718
r=None,
719719
theta=None,
720720
color=None,
@@ -753,7 +753,7 @@ def line_polar(
753753

754754

755755
def bar_polar(
756-
data_frame,
756+
data_frame=None,
757757
r=None,
758758
theta=None,
759759
color=None,
@@ -790,7 +790,7 @@ def bar_polar(
790790

791791

792792
def choropleth(
793-
data_frame,
793+
data_frame=None,
794794
lat=None,
795795
lon=None,
796796
locations=None,
@@ -829,7 +829,7 @@ def choropleth(
829829

830830

831831
def scatter_geo(
832-
data_frame,
832+
data_frame=None,
833833
lat=None,
834834
lon=None,
835835
locations=None,
@@ -872,7 +872,7 @@ def scatter_geo(
872872

873873

874874
def line_geo(
875-
data_frame,
875+
data_frame=None,
876876
lat=None,
877877
lon=None,
878878
locations=None,
@@ -913,7 +913,7 @@ def line_geo(
913913

914914

915915
def scatter_mapbox(
916-
data_frame,
916+
data_frame=None,
917917
lat=None,
918918
lon=None,
919919
color=None,
@@ -948,7 +948,7 @@ def scatter_mapbox(
948948

949949

950950
def line_mapbox(
951-
data_frame,
951+
data_frame=None,
952952
lat=None,
953953
lon=None,
954954
color=None,
@@ -978,7 +978,7 @@ def line_mapbox(
978978

979979

980980
def scatter_matrix(
981-
data_frame,
981+
data_frame=None,
982982
dimensions=None,
983983
color=None,
984984
symbol=None,
@@ -1015,7 +1015,7 @@ def scatter_matrix(
10151015

10161016

10171017
def parallel_coordinates(
1018-
data_frame,
1018+
data_frame=None,
10191019
dimensions=None,
10201020
color=None,
10211021
labels={},
@@ -1039,7 +1039,7 @@ def parallel_coordinates(
10391039

10401040

10411041
def parallel_categories(
1042-
data_frame,
1042+
data_frame=None,
10431043
dimensions=None,
10441044
color=None,
10451045
labels={},

plotly_express/_core.py

Lines changed: 27 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -669,11 +669,12 @@ def infer_config(args, constructor, trace_patch):
669669
)
670670
array_attrables = ["dimensions", "hover_data"]
671671
group_attrables = ["animation_frame", "facet_row", "facet_col", "line_group"]
672-
672+
all_attrables = attrables + group_attrables + ["color"]
673+
if not has_value(args, "data_frame"):
674+
build_dataframe(args, all_attrables)
673675
df_columns = args["data_frame"].columns
674-
675-
for attr in attrables + group_attrables + ["color"]:
676-
if attr in args and args[attr] is not None:
676+
for attr in all_attrables:
677+
if has_value(args, attr):
677678
maybe_col_list = [args[attr]] if attr not in array_attrables else args[attr]
678679
for maybe_col in maybe_col_list:
679680
try:
@@ -790,6 +791,28 @@ def get_orderings(args, grouper, grouped):
790791

791792
return orders, group_names
792793

794+
def has_value(d, key):
795+
return d.get(key, None) is not None
796+
797+
def build_dataframe(args, attrables):
798+
"""
799+
Constructs an implicit dataframe and modifies `args` in-place.
800+
801+
`attrables` is a list of keys into `args`, all of whose corresponding
802+
values are converted into columns of a dataframe.
803+
804+
Used to be support calls to plotting function that elide a dataframe argument;
805+
for example `scatter(x=[1,2], y=[3,4])`.
806+
"""
807+
dataset_fields = {}
808+
for field in attrables:
809+
if not has_value(args, field):
810+
continue
811+
dataset_fields[field] = args[field]
812+
# This sets the label of an attribute to be the name of the attribute.
813+
args[field] = field
814+
args["data_frame"] = pandas.DataFrame(dataset_fields)
815+
return args
793816

794817
def make_figure(args, constructor, trace_patch={}, layout_patch={}):
795818
apply_default_cascade(args)

0 commit comments

Comments
 (0)