Exemplo n.º 1
0
    def test_dict_unflatten(self):
        """Test passing a spec as keywords."""
        st._legacy_vega_lite_chart(df1,
                                   x="foo",
                                   boink_boop=100,
                                   baz={"boz": "booz"})

        c = self.get_delta_from_queue().new_element.vega_lite_chart
        self.assertEqual(c.HasField("data"), True)
        self.assertDictEqual(
            json.loads(c.spec),
            merge_dicts(
                autosize_spec,
                {
                    "baz": {
                        "boz": "booz"
                    },
                    "boink": {
                        "boop": 100
                    },
                    "encoding": {
                        "x": "foo"
                    },
                },
            ),
        )
Exemplo n.º 2
0
    def test_datasets_in_spec(self):
        """Test passing datasets={foo: df} inside the spec."""
        st._legacy_vega_lite_chart({"mark": "rect", "datasets": {"foo": df1}})

        c = self.get_delta_from_queue().new_element.vega_lite_chart
        self.assertEqual(c.HasField("data"), False)
        self.assertDictEqual(json.loads(c.spec),
                             merge_dicts(autosize_spec, {"mark": "rect"}))
Exemplo n.º 3
0
    def test_spec_in_arg1(self):
        """Test that it can be called spec as the 1st arg."""
        st._legacy_vega_lite_chart({"mark": "rect"})

        c = self.get_delta_from_queue().new_element.vega_lite_chart
        self.assertEqual(c.HasField("data"), False)
        self.assertDictEqual(json.loads(c.spec),
                             merge_dicts(autosize_spec, {"mark": "rect"}))
Exemplo n.º 4
0
    def test_spec_but_no_data(self):
        """Test that it can be called with only data set to None."""
        st._legacy_vega_lite_chart(None, {"mark": "rect"})

        c = self.get_delta_from_queue().new_element.vega_lite_chart
        self.assertEqual(c.HasField("data"), False)
        self.assertDictEqual(json.loads(c.spec),
                             merge_dicts(autosize_spec, {"mark": "rect"}))
Exemplo n.º 5
0
    def test_width_inside_spec(self):
        """Test the width up to Vega-Lite."""
        st._legacy_vega_lite_chart(df1, {"mark": "rect", "width": 200})

        c = self.get_delta_from_queue().new_element.vega_lite_chart
        self.assertDictEqual(
            json.loads(c.spec),
            merge_dicts(autosize_spec, {"mark": "rect", "width": 200}),
        )
Exemplo n.º 6
0
    def test_use_container_width(self):
        """Test that use_container_width=True autosets to full width."""
        st._legacy_vega_lite_chart(df1, {"mark": "rect"}, use_container_width=True)

        c = self.get_delta_from_queue().new_element.vega_lite_chart
        self.assertDictEqual(
            json.loads(c.spec), merge_dicts(autosize_spec, {"mark": "rect"})
        )

        self.assertEqual(c.use_container_width, True)
Exemplo n.º 7
0
 def _get_unnamed_data_methods(self):
     """DeltaGenerator methods that do not produce named datasets."""
     return [
         lambda df: st._legacy_dataframe(df),
         lambda df: st._legacy_table(df),
         lambda df: st._legacy_vega_lite_chart(
             df, {"mark": "line", "encoding": {"x": "a", "y": "b"}}
         ),
         # TODO: _legacy_line_chart, _legacy_bar_chart, etc.
     ]
Exemplo n.º 8
0
    def test_no_args_add_rows(self):
        """Test that you can call _legacy_add_rows on a _legacy_vega_lite_chart(None)."""
        x = st._legacy_vega_lite_chart({"mark": "rect"})

        c = self.get_delta_from_queue().new_element.vega_lite_chart
        self.assertEqual(c.HasField("data"), False)

        x._legacy_add_rows(df1)

        c = self.get_delta_from_queue().new_element.vega_lite_chart
        self.assertEqual(len(c.data.data.cols[0].strings.data), 4)
Exemplo n.º 9
0
 def _get_named_data_methods(self):
     """DeltaGenerator methods that produce named datasets."""
     # These should always name the desired data "mydata1"
     return [
         lambda df: st._legacy_vega_lite_chart(
             {
                 "mark": "line",
                 "datasets": {"mydata1": df},
                 "data": {"name": "mydata1"},
                 "encoding": {"x": "a", "y": "b"},
             }
         ),
         # TODO: deck_gl_chart
     ]
Exemplo n.º 10
0
    def test_legacy_add_rows(self):
        """Test that you can call _legacy_add_rows on a _legacy_vega_lite_chart(data)."""
        x = st._legacy_vega_lite_chart(df1, {"mark": "rect"})

        c = self.get_delta_from_queue().new_element.vega_lite_chart
        self.assertEqual(len(c.data.data.cols[0].strings.data), 4)

        x._legacy_add_rows(df2)

        c = self.get_delta_from_queue().new_element.vega_lite_chart
        self.assertEqual(len(c.data.data.cols[0].strings.data), 8)
        self.assertDictEqual(json.loads(c.spec),
                             merge_dicts(autosize_spec, {"mark": "rect"}))

        c = self.get_delta_from_queue().new_element.vega_lite_chart
        self.assertEqual(c.HasField("data"), True)
Exemplo n.º 11
0
        "color": {"field": "c", "type": "quantitative"},
    },
}

spec_with_width = {
    "mark": "circle",
    "encoding": {
        "x": {"field": "a", "type": "quantitative"},
        "y": {"field": "b", "type": "quantitative"},
        "size": {"field": "c", "type": "quantitative"},
        "color": {"field": "c", "type": "quantitative"},
    },
    "width": "500",
}

st._legacy_vega_lite_chart(df, spec, use_container_width=True)
st._legacy_vega_lite_chart(df, spec, use_container_width=True)
st._legacy_vega_lite_chart(df, spec)
st._legacy_vega_lite_chart(df, spec_with_width)

# Screenshot comparison

st.header("Different ways to get the exact same plot")

df = pd.DataFrame([["A", "B", "C", "D"], [28, 55, 43, 91]], index=["a", "b"]).T

st.write("Using a top-level `df` and a `spec` dict:")

st._legacy_vega_lite_chart(
    df,
    {
Exemplo n.º 12
0
 def test_pyarrow_table_data(self):
     """Test that an error is raised when called with `pyarrow.Table` data."""
     with self.assertRaises(StreamlitAPIException):
         st._legacy_vega_lite_chart(pa.Table.from_pandas(df1), {"mark": "rect"})
Exemplo n.º 13
0
 def test_none_args(self):
     """Test that an error is raised when called with args set to None."""
     with self.assertRaises(ValueError):
         st._legacy_vega_lite_chart(None, None)
Exemplo n.º 14
0
 def test_no_args(self):
     """Test that an error is raised when called with no args."""
     with self.assertRaises(ValueError):
         st._legacy_vega_lite_chart()
Exemplo n.º 15
0
import matplotlib.pyplot as plt
import streamlit as st
import pandas as pd

data = pd.DataFrame({"a": [1, 2, 3, 4], "b": [1, 3, 2, 4]})

spec = {
    "mark": "line",
    "encoding": {
        "x": {"field": "a", "type": "quantitative"},
        "y": {"field": "b", "type": "quantitative"},
    },
}

# 5 empty charts
st._legacy_vega_lite_chart(spec, use_container_width=True)
fig, ax = plt.subplots()
st.pyplot(fig, use_container_width=True)
st._legacy_line_chart()
st._legacy_bar_chart()
st._legacy_area_chart()

# 1 empty map
# comment this one out to avoid this Cypress-Mapbox related error.
# ref: https://github.com/cypress-io/cypress/issues/4322
# st.pydeck_chart()
# st.map()

# 6 errors
try:
    st._legacy_vega_lite_chart({}, use_container_width=True)
Exemplo n.º 16
0
    table_el = st._legacy_table(df1)
    dataframe_el = st._legacy_dataframe(df1)
    chart_el1 = st._legacy_line_chart()
    chart_el2 = st._legacy_line_chart(df1)

    # 4 identical charts, built in different ways.
    vega_el1 = st._legacy_vega_lite_chart(
        df1,
        {
            "mark": {
                "type": "line",
                "point": True
            },
            "encoding": {
                "x": {
                    "field": "a",
                    "type": "quantitative"
                },
                "y": {
                    "field": "b",
                    "type": "quantitative"
                },
            },
        },
        use_container_width=True,
    )
    vega_el2 = st._legacy_vega_lite_chart(
        {
            "datasets": {
                "foo": df1
            },
            "data": {