-
-
Notifications
You must be signed in to change notification settings - Fork 2.6k
/
Copy pathtest_pandas_backend.py
57 lines (53 loc) · 2.22 KB
/
test_pandas_backend.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import plotly.express as px
import numpy as np
import pandas as pd
import pytest
@pytest.mark.skipif(
not hasattr(pd.options.plotting, "backend"),
reason="Currently installed pandas doesn't support plotting backends.",
)
@pytest.mark.parametrize(
"pandas_fn,px_fn",
[
(lambda df: df.plot(), px.line),
(
lambda df: df.plot.scatter("A", "B"),
lambda df: px.scatter(df, "A", "B"),
),
(lambda df: df.plot.line(), px.line),
(lambda df: df.plot.area(), px.area),
(lambda df: df.plot.bar(), px.bar),
(lambda df: df.plot.barh(), lambda df: px.bar(df, orientation="h")),
(lambda df: df.plot.box(), px.box),
(lambda df: df.plot.hist(), px.histogram),
(lambda df: df.boxplot(), px.box),
(lambda df: df.hist(), px.histogram),
(lambda df: df["A"].hist(), lambda df: px.histogram(df["A"])),
(lambda df: df.plot(kind="line"), px.line),
(lambda df: df.plot(kind="area"), px.area),
(lambda df: df.plot(kind="bar"), px.bar),
(lambda df: df.plot(kind="box"), px.box),
(lambda df: df.plot(kind="hist"), px.histogram),
(lambda df: df.plot(kind="histogram"), px.histogram),
(lambda df: df.plot(kind="violin"), px.violin),
(lambda df: df.plot(kind="strip"), px.strip),
(lambda df: df.plot(kind="funnel"), px.funnel),
(lambda df: df.plot(kind="density_contour"), px.density_contour),
(lambda df: df.plot(kind="density_heatmap"), px.density_heatmap),
(lambda df: df.plot(kind="imshow"), px.imshow),
],
)
def test_pandas_equiv(pandas_fn, px_fn):
pd.options.plotting.backend = "plotly"
df = pd.DataFrame(np.random.randn(100, 4), columns=list("ABCD")).cumsum()
assert pandas_fn(df) == px_fn(df)
@pytest.mark.skipif(
not hasattr(pd.options.plotting, "backend"),
reason="Currently installed pandas doesn't support plotting backends.",
)
def test_pandas_example():
pd.options.plotting.backend = "plotly"
ts = pd.Series(np.random.randn(1000), index=pd.date_range("1/1/2000", periods=1000))
df = pd.DataFrame(np.random.randn(1000, 4), index=ts.index, columns=list("ABCD"))
fig = df.iloc[5].plot.bar()
assert len(fig.data) == 1