Ejemplo n.º 1
0
def test_append_scatter():
    expected = Figure(
        data=Data([Scatter(x=[1, 2, 3], y=[2, 3, 4], xaxis="x5", yaxis="y5")]),
        layout=Layout(
            xaxis1=XAxis(domain=[0.0, 0.2888888888888889], anchor="y1"),
            xaxis2=XAxis(domain=[0.35555555555555557, 0.6444444444444445],
                         anchor="y2"),
            xaxis3=XAxis(domain=[0.7111111111111111, 1.0], anchor="y3"),
            xaxis4=XAxis(domain=[0.0, 0.2888888888888889], anchor="y4"),
            xaxis5=XAxis(domain=[0.35555555555555557, 0.6444444444444445],
                         anchor="y5"),
            xaxis6=XAxis(domain=[0.7111111111111111, 1.0], anchor="y6"),
            yaxis1=YAxis(domain=[0.575, 1.0], anchor="x1"),
            yaxis2=YAxis(domain=[0.575, 1.0], anchor="x2"),
            yaxis3=YAxis(domain=[0.575, 1.0], anchor="x3"),
            yaxis4=YAxis(domain=[0.0, 0.425], anchor="x4"),
            yaxis5=YAxis(domain=[0.0, 0.425], anchor="x5"),
            yaxis6=YAxis(domain=[0.0, 0.425], anchor="x6"),
        ),
    )

    trace = Scatter(x=[1, 2, 3], y=[2, 3, 4])
    fig = tls.make_subplots(rows=2, cols=3)
    fig.append_trace(trace, 2, 2)

    d1, d2 = strip_dict_params(fig["data"][0], expected["data"][0])
    assert d1 == d2

    d1, d2 = strip_dict_params(fig["layout"], expected["layout"])
    assert d1 == d2
Ejemplo n.º 2
0
 def test_update_list_empty(self):
     trace1 = Scatter(x=[1, 2, 3], y=[2, 1, 2])
     trace2 = Scatter(x=[1, 2, 3], y=[3, 2, 1])
     fig = Figure([trace1, trace2])
     fig.update([])
     d1, d2 = strip_dict_params(fig.data[0],
                                Scatter(x=[1, 2, 3], y=[2, 1, 2]))
     assert d1 == d2
     d1, d2 = strip_dict_params(fig.data[1],
                                Scatter(x=[1, 2, 3], y=[3, 2, 1]))
     assert d1 == d2
    def test_toplevel_dict(self):
        d1, d2 = strip_dict_params(self.scatter["marker"], {})
        assert d1 == d2
        self.scatter["marker"] = dict(color="yellow", size=10)

        assert isinstance(self.scatter["marker"], go.scatter.Marker)
        d1, d2 = strip_dict_params(
            self.scatter.marker, self.expected_toplevel["marker"]
        )
        assert d1 == d2

        d1, d2 = strip_dict_params(self.scatter, self.expected_toplevel)
        assert d1 == d2
    def test_nested_dict_dot(self):
        d1, d2 = strip_dict_params(self.scatter.marker.colorbar, {})
        assert d1 == d2
        self.scatter["marker.colorbar"] = dict(bgcolor="yellow", thickness=5)

        assert isinstance(self.scatter["marker.colorbar"], go.scatter.marker.ColorBar)
        d1, d2 = strip_dict_params(
            self.scatter["marker.colorbar"], self.expected_nested["marker"]["colorbar"]
        )
        assert d1 == d2

        d1, d2 = strip_dict_params(self.scatter, self.expected_nested)
        assert d1 == d2
    def test_nested_update_dict(self):

        self.scatter.update(marker={"colorbar": dict(bgcolor="yellow", thickness=5)})

        assert isinstance(
            self.scatter["marker"]["colorbar"], go.scatter.marker.ColorBar
        )
        d1, d2 = strip_dict_params(
            self.scatter["marker"]["colorbar"],
            self.expected_nested["marker"]["colorbar"],
        )
        assert d1 == d2

        d1, d2 = strip_dict_params(self.scatter, self.expected_nested)
        assert d1 == d2
Ejemplo n.º 6
0
    def test_update_list(self):
        trace1 = Scatter(x=[1, 2, 3], y=[2, 1, 2])
        trace2 = Scatter(x=[1, 2, 3], y=[3, 2, 1])
        fig = Figure([trace1, trace2])
        update = dict(x=[2, 3, 4], y=[1, 2, 3])
        update_res1 = fig.data[0].update(update)
        update_res2 = fig.data[1].update(update)

        d1, d2 = strip_dict_params(fig.data[0],
                                   Scatter(x=[2, 3, 4], y=[1, 2, 3]))
        assert d1 == d2
        d1, d2 = strip_dict_params(fig.data[1],
                                   Scatter(x=[2, 3, 4], y=[1, 2, 3]))
        assert d1 == d2
        assert update_res1 is fig.data[0]
        assert update_res2 is fig.data[1]
    def test_nested_update_underscores(self):
        assert self.scatter["error_x.type"] is None
        self.scatter.update({"error_x_type": "percent"})

        assert self.scatter["error_x_type"] == "percent"
        d1, d2 = strip_dict_params(self.scatter, self.expected_nested_error_x)
        assert d1 == d2
    def setUp(self):
        # Construct initial scatter object
        self.scatter = go.Scatter(name="scatter A")

        # Assert initial state
        d1, d2 = strip_dict_params(
            self.scatter, {"type": "scatter", "name": "scatter A"}
        )
        assert d1 == d2

        # Construct expected results
        self.expected_toplevel = {
            "type": "scatter",
            "name": "scatter A",
            "fillcolor": "green",
        }

        self.expected_nested = {
            "type": "scatter",
            "name": "scatter A",
            "marker": {"colorbar": {"title": {"font": {"family": "courier"}}}},
        }

        self.expected_nested_error_x = {
            "type": "scatter",
            "name": "scatter A",
            "error_x": {"type": "percent"},
        }
Ejemplo n.º 9
0
def test_complicated_line():
    fig, ax = plt.subplots()
    ax.plot(D["x1"], D["y1"], "ro", markersize=10, alpha=0.5, label="one")
    ax.plot(D["x1"], D["y1"], "-b", linewidth=2, alpha=0.7, label="two")
    ax.plot(
        D["x2"],
        D["y2"],
        "b+",
        markeredgewidth=2,
        markersize=10,
        alpha=0.6,
        label="three",
    )
    ax.plot(D["x2"], D["y2"], "--r", linewidth=2, alpha=0.8, label="four")
    renderer = run_fig(fig)
    for data_no, data_dict in enumerate(renderer.plotly_fig["data"]):
        d1, d2 = strip_dict_params(data_dict,
                                   COMPLICATED_LINE["data"][data_no],
                                   ignore=["uid"])

        equivalent, msg = compare_dict(d1, d2)
        assert equivalent, msg

    equivalent, msg = compare_dict(renderer.plotly_fig["layout"],
                                   COMPLICATED_LINE["layout"])
    assert equivalent, msg
    def test_toplevel_item(self):
        assert self.scatter["fillcolor"] is None
        self.scatter["fillcolor"] = "green"
        assert self.scatter["fillcolor"] == "green"

        d1, d2 = strip_dict_params(self.scatter, self.expected_toplevel)
        assert d1 == d2
    def test_nested_update_dots(self):
        assert self.scatter["marker.colorbar.title.font.family"] is None
        self.scatter.update({"marker.colorbar.title.font.family": "courier"})

        assert self.scatter["marker.colorbar.title.font.family"] == "courier"
        d1, d2 = strip_dict_params(self.scatter, self.expected_nested)
        assert d1 == d2
Ejemplo n.º 12
0
def test_h_and_v_bars():
    fig, ax = plt.subplots()
    ax.bar(
        left=D["multi_left"],
        height=D["multi_height"],
        width=10,
        color="green",
        alpha=0.5,
    )
    # changing height 10 -> 14 because ValueError if bargap not in [0, 1]
    ax.barh(
        bottom=D["multi_bottom"],
        width=D["multi_width"],
        height=14,
        color="red",
        alpha=0.5,
    )
    renderer = run_fig(fig)
    for data_no, data_dict in enumerate(renderer.plotly_fig["data"]):
        d1, d2 = strip_dict_params(data_dict,
                                   H_AND_V_BARS["data"][data_no],
                                   ignore=["uid"])

        equivalent, msg = compare_dict(d1, d2)
        assert equivalent, msg

    equivalent, msg = compare_dict(renderer.plotly_fig["layout"],
                                   H_AND_V_BARS["layout"])
    assert equivalent, msg
    def test_toplevel_attr(self):
        assert self.scatter.fillcolor is None
        self.scatter.fillcolor = "green"
        assert self.scatter.fillcolor == "green"

        d1, d2 = strip_dict_params(self.scatter, self.expected_toplevel)
        assert d1 == d2
    def setUp(self):
        # Construct initial scatter object
        self.parcoords = go.Parcoords(name="parcoords A")

        # Assert initial state
        d1, d2 = strip_dict_params(
            self.parcoords, {"type": "parcoords", "name": "parcoords A"}
        )
        assert d1 == d2

        # Construct expected results
        self.expected_toplevel = {
            "type": "parcoords",
            "name": "parcoords A",
            "dimensions": [
                {"values": [2, 3, 1], "visible": True},
                {"values": [1, 2, 3], "label": "dim1"},
            ],
        }

        self.layout = go.Layout()

        self.expected_layout1 = {"updatemenus": [{}, {"font": {"family": "courier"}}]}

        self.expected_layout2 = {
            "updatemenus": [{}, {"buttons": [{}, {}, {"method": "restyle"}]}]
        }
 def test_nested_item(self):
     assert self.scatter["marker"]["colorbar"]["title"]["font"]["family"] is None
     self.scatter["marker"]["colorbar"]["title"]["font"]["family"] = "courier"
     assert (
         self.scatter["marker"]["colorbar"]["title"]["font"]["family"] == "courier"
     )
     d1, d2 = strip_dict_params(self.scatter, self.expected_nested)
     assert d1 == d2
 def test_nested_update(self):
     self.scatter.update(
         marker={"colorbar": {"title": {"font": {"family": "courier"}}}}
     )
     assert (
         self.scatter[("marker", "colorbar", "title", "font", "family")] == "courier"
     )
     d1, d2 = strip_dict_params(self.scatter, self.expected_nested)
     assert d1 == d2
    def test_assign_nested_attr(self):
        self.assertEqual(self.layout.updatemenus, ())

        # Initialize empty updatemenus
        self.layout.updatemenus = [{}, {}]
        self.assertEqual(
            self.layout["updatemenus"], (go.layout.Updatemenu(), go.layout.Updatemenu())
        )

        self.layout.updatemenus[1].font.family = "courier"
        d1, d2 = strip_dict_params(self.layout, self.expected_layout1)
        assert d1 == d2
Ejemplo n.º 18
0
def test_simple_line():
    fig, ax = plt.subplots()
    ax.plot(D["x1"], D["y1"], label="simple")
    renderer = run_fig(fig)
    for data_no, data_dict in enumerate(renderer.plotly_fig["data"]):
        d1, d2 = strip_dict_params(data_dict,
                                   SIMPLE_LINE["data"][data_no],
                                   ignore=["uid"])

        equivalent, msg = compare_dict(d1, d2)
        assert equivalent, msg
    equivalent, msg = compare_dict(renderer.plotly_fig["layout"],
                                   SIMPLE_LINE["layout"])
    assert equivalent, msg
Ejemplo n.º 19
0
def test_append_scatter3d():
    expected = Figure(
        data=Data([
            Scatter3d(x=[1, 2, 3], y=[2, 3, 4], z=[1, 2, 3], scene="scene1"),
            Scatter3d(x=[1, 2, 3], y=[2, 3, 4], z=[1, 2, 3], scene="scene2"),
        ]),
        layout=Layout(
            scene1=Scene(domain={
                "y": [0.575, 1.0],
                "x": [0.0, 1.0]
            }),
            scene2=Scene(domain={
                "y": [0.0, 0.425],
                "x": [0.0, 1.0]
            }),
        ),
    )

    fig = tls.make_subplots(rows=2,
                            cols=1,
                            specs=[[{
                                "is_3d": True
                            }], [{
                                "is_3d": True
                            }]])
    trace = Scatter3d(x=[1, 2, 3], y=[2, 3, 4], z=[1, 2, 3])
    fig.append_trace(trace, 1, 1)
    fig.append_trace(trace, 2, 1)

    d1, d2 = strip_dict_params(fig["data"][0], expected["data"][0])
    assert d1 == d2

    d1, d2 = strip_dict_params(fig["data"][1], expected["data"][1])
    assert d1 == d2

    d1, d2 = strip_dict_params(fig["layout"], expected["layout"])
    assert d1 == d2
    def test_assign_double_nested_update_dict(self):

        # Initialize empty updatemenus
        self.layout.updatemenus = [{}, {}]

        # Initialize empty buttons in updatemenu[1]
        self.layout.updatemenus[1].buttons = [{}, {}, {}]

        # Update
        self.layout.update(updatemenus={1: {"buttons": {2: {"method": "restyle"}}}})

        # Check
        self.assertEqual(self.layout.updatemenus[1].buttons[2].method, "restyle")
        d1, d2 = strip_dict_params(self.layout, self.expected_layout2)
        assert d1 == d2
Ejemplo n.º 21
0
def test_horizontal_bar():
    fig, ax = plt.subplots()
    ax.barh(bottom=D["bottom"], width=D["width"])
    renderer = run_fig(fig)

    for data_no, data_dict in enumerate(renderer.plotly_fig["data"]):
        d1, d2 = strip_dict_params(data_dict,
                                   HORIZONTAL_BAR["data"][data_no],
                                   ignore=["uid"])

        equivalent, msg = compare_dict(d1, d2)
        assert equivalent, msg

    equivalent, msg = compare_dict(renderer.plotly_fig["layout"],
                                   HORIZONTAL_BAR["layout"])
    assert equivalent, msg
Ejemplo n.º 22
0
def test_vertical_bar():
    fig, ax = plt.subplots()
    ax.bar(left=D["left"], height=D["height"])
    renderer = run_fig(fig)

    for data_no, data_dict in enumerate(renderer.plotly_fig["data"]):
        d1, d2 = strip_dict_params(data_dict,
                                   VERTICAL_BAR["data"][data_no],
                                   ignore=["uid"])

        equivalent, msg = compare_dict(d1, d2)
        assert equivalent, msg

    equivalent, msg = compare_dict(renderer.plotly_fig["layout"],
                                   VERTICAL_BAR["layout"])
    assert equivalent, msg
    def test_assign_double_nested_dot(self):
        self.assertEqual(self.layout.updatemenus, ())

        # Initialize empty updatemenus
        self.layout["updatemenus"] = [{}, {}]

        # Initialize empty buttons in updatemenu[1]
        self.layout["updatemenus.1.buttons"] = [{}, {}, {}]

        # Assign
        self.layout["updatemenus[1].buttons[2].method"] = "restyle"

        # Check
        self.assertEqual(self.layout["updatemenus[1].buttons[2].method"], "restyle")
        d1, d2 = strip_dict_params(self.layout, self.expected_layout2)
        assert d1 == d2
    def test_update_double_nested_underscore(self):
        self.assertEqual(self.layout.updatemenus, ())

        # Initialize empty updatemenus
        self.layout["updatemenus"] = [{}, {}]

        # Initialize empty buttons in updatemenu[1]
        self.layout["updatemenus_1_buttons"] = [{}, {}, {}]

        # Update
        self.layout.update({"updatemenus_1_buttons_2_method": "restyle"})

        # Check
        self.assertEqual(self.layout["updatemenus[1].buttons[2].method"], "restyle")
        d1, d2 = strip_dict_params(self.layout, self.expected_layout2)
        assert d1 == d2
Ejemplo n.º 25
0
def test_simple_scatter():
    fig, ax = plt.subplots()
    ax.scatter(D["x1"], D["y1"])
    renderer = run_fig(fig)
    for data_no, data_dict in enumerate(renderer.plotly_fig["data"]):
        d1, d2 = strip_dict_params(
            data_dict, SIMPLE_SCATTER["data"][data_no], ignore=["uid"]
        )
        print(d1)
        print("\n")
        print(d2)
        assert d1 == d2

    equivalent, msg = compare_dict(
        renderer.plotly_fig["layout"], SIMPLE_SCATTER["layout"]
    )
    assert equivalent, msg
Ejemplo n.º 26
0
def test_double_scatter():
    fig, ax = plt.subplots()
    ax.scatter(D["x1"], D["y1"], color="red", s=121, marker="^", alpha=0.5)
    ax.scatter(D["x2"], D["y2"], color="purple", s=64, marker="s", alpha=0.5)
    renderer = run_fig(fig)
    for data_no, data_dict in enumerate(renderer.plotly_fig["data"]):
        d1, d2 = strip_dict_params(
            data_dict, DOUBLE_SCATTER["data"][data_no], ignore=["uid"]
        )
        print(d1)
        print("\n")
        print(d2)
        assert d1 == d2

    equivalent, msg = compare_dict(
        renderer.plotly_fig["layout"], DOUBLE_SCATTER["layout"]
    )
    assert equivalent, msg
    def test_assign_double_nested_tuple(self):
        self.assertEqual(self.layout.updatemenus, ())

        # Initialize empty updatemenus
        self.layout.updatemenus = [{}, {}]

        # Initialize empty buttons in updatemenu[1]
        self.layout[("updatemenus", 1, "buttons")] = [{}, {}, {}]

        # Assign
        self.layout[("updatemenus", 1, "buttons", 2, "method")] = "restyle"

        # Check
        self.assertEqual(
            self.layout[("updatemenus", 1, "buttons", 2, "method")], "restyle"
        )

        d1, d2 = strip_dict_params(self.layout, self.expected_layout2)
        assert d1 == d2
    def setUp(self):
        # Construct initial scatter object
        self.scatter = go.Scatter(name="scatter A")

        # Assert initial state
        d1, d2 = strip_dict_params(
            self.scatter, {"type": "scatter", "name": "scatter A"}
        )
        assert d1 == d2

        # Construct expected results
        self.expected_toplevel = {
            "type": "scatter",
            "name": "scatter A",
            "marker": {"color": "yellow", "size": 10},
        }

        self.expected_nested = {
            "type": "scatter",
            "name": "scatter A",
            "marker": {"colorbar": {"bgcolor": "yellow", "thickness": 5}},
        }
Ejemplo n.º 29
0
def test_even_linear_scale():
    fig, ax = plt.subplots()
    x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    y = [10, 3, 100, 6, 45, 4, 80, 45, 3, 59]
    ax.plot(x, y)
    _ = ax.set_xticks(list(range(0, 20, 3)), True)
    _ = ax.set_yticks(list(range(0, 200, 13)), True)
    renderer = run_fig(fig)
    for data_no, data_dict in enumerate(renderer.plotly_fig["data"]):
        # equivalent, msg = compare_dict(data_dict.to_plotly_json(),
        #                                EVEN_LINEAR_SCALE['data'][data_no].to_plotly_json())
        # assert equivalent, msg
        d1, d2 = strip_dict_params(data_dict,
                                   EVEN_LINEAR_SCALE["data"][data_no],
                                   ignore=["uid"])

        equivalent, msg = compare_dict(d1, d2)
        assert equivalent, msg

    equivalent, msg = compare_dict(renderer.plotly_fig["layout"],
                                   EVEN_LINEAR_SCALE["layout"])
    assert equivalent, msg
Ejemplo n.º 30
0
def test_annotations():
    fig, ax = plt.subplots()
    ax.plot([1, 2, 3], "b-")
    ax.plot([3, 2, 1], "b-")
    ax.text(0.001,
            0.999,
            "top-left",
            transform=ax.transAxes,
            va="top",
            ha="left")
    ax.text(0.001,
            0.001,
            "bottom-left",
            transform=ax.transAxes,
            va="baseline",
            ha="left")
    ax.text(0.999,
            0.999,
            "top-right",
            transform=ax.transAxes,
            va="top",
            ha="right")
    ax.text(0.999,
            0.001,
            "bottom-right",
            transform=ax.transAxes,
            va="baseline",
            ha="right")
    renderer = run_fig(fig)
    for data_no, data_dict in enumerate(renderer.plotly_fig["data"]):
        d1, d2 = strip_dict_params(data_dict,
                                   ANNOTATIONS["data"][data_no],
                                   ignore=["uid"])
        equivalent, msg = compare_dict(d1, d2)
        assert equivalent, msg
    for no, note in enumerate(renderer.plotly_fig["layout"]["annotations"]):
        equivalent, msg = compare_dict(
            note, ANNOTATIONS["layout"]["annotations"][no])
        assert equivalent, msg