Exemple #1
0
def test_repeat():
    # wrapped repeat
    chart1 = alt.Chart('data.csv').mark_point().encode(
        x=alt.X(alt.repeat(), type='quantitative'),
        y='y:Q',
    ).repeat(
        ['A', 'B', 'C', 'D'],
        columns=2
    )

    dct1 = chart1.to_dict()

    assert dct1['repeat'] == ['A', 'B', 'C', 'D']
    assert dct1['columns'] == 2
    assert dct1['spec']['encoding']['x']['field'] == {'repeat': 'repeat'}

    # explicit row/col repeat
    chart2 = alt.Chart('data.csv').mark_point().encode(
        x=alt.X(alt.repeat('row'), type='quantitative'),
        y=alt.Y(alt.repeat('column'), type='quantitative')
    ).repeat(
        row=['A', 'B', 'C'],
        column=['C', 'B', 'A']
    )

    dct2 = chart2.to_dict()

    assert dct2['repeat'] == {'row': ['A', 'B', 'C'], 'column': ['C', 'B', 'A']}
    assert 'columns' not in dct2
    assert dct2['spec']['encoding']['x']['field'] == {'repeat': 'row'}
    assert dct2['spec']['encoding']['y']['field'] == {'repeat': 'column'}
Exemple #2
0
def test_layer_errors():
    toplevel_chart = alt.Chart("data.txt").mark_point().configure_legend(
        columns=2)

    facet_chart1 = alt.Chart("data.txt").mark_point().encode(facet="row:Q")

    facet_chart2 = alt.Chart("data.txt").mark_point().facet("row:Q")

    repeat_chart = alt.Chart("data.txt").mark_point().repeat(["A", "B", "C"])

    simple_chart = alt.Chart("data.txt").mark_point()

    with pytest.raises(ValueError) as err:
        toplevel_chart + simple_chart
    assert str(err.value).startswith(
        'Objects with "config" attribute cannot be used within LayerChart.')

    with pytest.raises(ValueError) as err:
        repeat_chart + simple_chart
    assert str(err.value) == "Repeat charts cannot be layered."

    with pytest.raises(ValueError) as err:
        facet_chart1 + simple_chart
    assert str(err.value) == "Faceted charts cannot be layered."

    with pytest.raises(ValueError) as err:
        alt.layer(simple_chart) + facet_chart2
    assert str(err.value) == "Faceted charts cannot be layered."
Exemple #3
0
def test_consolidate_InlineData():
    data = alt.InlineData(
        values=[{'a': 1, 'b': 1}, {'a': 2, 'b': 2}],
        format={'type': 'csv'}
    )
    chart = alt.Chart(data).mark_point()

    with alt.data_transformers.enable(consolidate_datasets=False):
        dct = chart.to_dict()
    assert dct['data']['format'] == data.format
    assert dct['data']['values'] == data.values

    with alt.data_transformers.enable(consolidate_datasets=True):
        dct = chart.to_dict()
    assert dct['data']['format'] == data.format
    assert list(dct['datasets'].values())[0] == data.values

    data = alt.InlineData(
        values=[],
        name='runtime_data'
    )
    chart = alt.Chart(data).mark_point()

    with alt.data_transformers.enable(consolidate_datasets=False):
        dct = chart.to_dict()
    assert dct['data'] == data.to_dict()

    with alt.data_transformers.enable(consolidate_datasets=True):
        dct = chart.to_dict()
    assert dct['data'] == data.to_dict()
Exemple #4
0
def test_consolidate_InlineData():
    data = alt.InlineData(values=[{
        "a": 1,
        "b": 1
    }, {
        "a": 2,
        "b": 2
    }],
                          format={"type": "csv"})
    chart = alt.Chart(data).mark_point()

    with alt.data_transformers.enable(consolidate_datasets=False):
        dct = chart.to_dict()
    assert dct["data"]["format"] == data.format
    assert dct["data"]["values"] == data.values

    with alt.data_transformers.enable(consolidate_datasets=True):
        dct = chart.to_dict()
    assert dct["data"]["format"] == data.format
    assert list(dct["datasets"].values())[0] == data.values

    data = alt.InlineData(values=[], name="runtime_data")
    chart = alt.Chart(data).mark_point()

    with alt.data_transformers.enable(consolidate_datasets=False):
        dct = chart.to_dict()
    assert dct["data"] == data.to_dict()

    with alt.data_transformers.enable(consolidate_datasets=True):
        dct = chart.to_dict()
    assert dct["data"] == data.to_dict()
Exemple #5
0
def test_facet_basic():
    # wrapped facet
    chart1 = (alt.Chart("data.csv").mark_point().encode(
        x="x:Q",
        y="y:Q",
    ).facet("category:N", columns=2))

    dct1 = chart1.to_dict()

    assert dct1["facet"] == alt.Facet("category:N").to_dict()
    assert dct1["columns"] == 2
    assert dct1["data"] == alt.UrlData("data.csv").to_dict()

    # explicit row/col facet
    chart2 = (alt.Chart("data.csv").mark_point().encode(
        x="x:Q",
        y="y:Q",
    ).facet(row="category1:Q", column="category2:Q"))

    dct2 = chart2.to_dict()

    assert dct2["facet"]["row"] == alt.Facet("category1:Q").to_dict()
    assert dct2["facet"]["column"] == alt.Facet("category2:Q").to_dict()
    assert "columns" not in dct2
    assert dct2["data"] == alt.UrlData("data.csv").to_dict()
Exemple #6
0
def test_facet():
    # wrapped facet
    chart1 = alt.Chart('data.csv').mark_point().encode(
        x='x:Q',
        y='y:Q',
    ).facet(
        'category:N',
        columns=2
    )

    dct1 = chart1.to_dict()

    assert dct1['facet'] == alt.Facet('category:N').to_dict()
    assert dct1['columns'] == 2
    assert dct1['data'] == alt.UrlData('data.csv').to_dict()

    # explicit row/col facet
    chart2 = alt.Chart('data.csv').mark_point().encode(
        x='x:Q',
        y='y:Q',
    ).facet(
        row='category1:Q',
        column='category2:Q'
    )

    dct2 = chart2.to_dict()

    assert dct2['facet']['row'] == alt.Facet('category1:Q').to_dict()
    assert dct2['facet']['column'] == alt.Facet('category2:Q').to_dict()
    assert 'columns' not in dct2
    assert dct2['data'] == alt.UrlData('data.csv').to_dict()
Exemple #7
0
def test_chart_infer_types():
    data = pd.DataFrame({'x': pd.date_range('2012', periods=10, freq='Y'),
                         'y': range(10),
                         'c': list('abcabcabca')})

    def _check_encodings(chart):
        dct = chart.to_dict()
        assert dct['encoding']['x']['type'] == 'temporal'
        assert dct['encoding']['x']['field'] == 'x'
        assert dct['encoding']['y']['type'] == 'quantitative'
        assert dct['encoding']['y']['field'] == 'y'
        assert dct['encoding']['color']['type'] == 'nominal'
        assert dct['encoding']['color']['field'] == 'c'

    # Pass field names by keyword
    chart = alt.Chart(data).mark_point().encode(x='x', y='y', color='c')
    _check_encodings(chart)

    # pass Channel objects by keyword
    chart = alt.Chart(data).mark_point().encode(x=alt.X('x'), y=alt.Y('y'),
                                                color=alt.Color('c'))
    _check_encodings(chart)

    # pass Channel objects by value
    chart = alt.Chart(data).mark_point().encode(alt.X('x'), alt.Y('y'),
                                                alt.Color('c'))
    _check_encodings(chart)

    # override default types
    chart = alt.Chart(data).mark_point().encode(alt.X('x', type='nominal'),
                                                alt.Y('y', type='ordinal'))
    dct = chart.to_dict()
    assert dct['encoding']['x']['type'] == 'nominal'
    assert dct['encoding']['y']['type'] == 'ordinal'
Exemple #8
0
def test_repeat():
    # wrapped repeat
    chart1 = (alt.Chart("data.csv").mark_point().encode(
        x=alt.X(alt.repeat(), type="quantitative"),
        y="y:Q",
    ).repeat(["A", "B", "C", "D"], columns=2))

    dct1 = chart1.to_dict()

    assert dct1["repeat"] == ["A", "B", "C", "D"]
    assert dct1["columns"] == 2
    assert dct1["spec"]["encoding"]["x"]["field"] == {"repeat": "repeat"}

    # explicit row/col repeat
    chart2 = (alt.Chart("data.csv").mark_point().encode(
        x=alt.X(alt.repeat("row"), type="quantitative"),
        y=alt.Y(alt.repeat("column"), type="quantitative"),
    ).repeat(row=["A", "B", "C"], column=["C", "B", "A"]))

    dct2 = chart2.to_dict()

    assert dct2["repeat"] == {
        "row": ["A", "B", "C"],
        "column": ["C", "B", "A"]
    }
    assert "columns" not in dct2
    assert dct2["spec"]["encoding"]["x"]["field"] == {"repeat": "row"}
    assert dct2["spec"]["encoding"]["y"]["field"] == {"repeat": "column"}
Exemple #9
0
def test_subcharts_different_data(method, data):
    func = getattr(alt, method)

    point = alt.Chart(data).mark_point().encode(x="x:Q", y="y:Q")
    otherdata = alt.Chart("data.csv").mark_point().encode(x="x:Q", y="y:Q")
    nodata = alt.Chart().mark_point().encode(x="x:Q", y="y:Q")

    chart1 = func(point, otherdata)
    assert chart1.data is alt.Undefined
    assert getattr(chart1, method)[0].data is data

    chart2 = func(point, nodata)
    assert chart2.data is alt.Undefined
    assert getattr(chart2, method)[0].data is data
Exemple #10
0
def test_chart_operations():
    data = pd.DataFrame({
        "x": pd.date_range("2012", periods=10, freq="Y"),
        "y": range(10),
        "c": list("abcabcabca"),
    })
    chart1 = alt.Chart(data).mark_line().encode(x="x", y="y", color="c")
    chart2 = chart1.mark_point()
    chart3 = chart1.mark_circle()
    chart4 = chart1.mark_square()

    chart = chart1 + chart2 + chart3
    assert isinstance(chart, alt.LayerChart)
    assert len(chart.layer) == 3
    chart += chart4
    assert len(chart.layer) == 4

    chart = chart1 | chart2 | chart3
    assert isinstance(chart, alt.HConcatChart)
    assert len(chart.hconcat) == 3
    chart |= chart4
    assert len(chart.hconcat) == 4

    chart = chart1 & chart2 & chart3
    assert isinstance(chart, alt.VConcatChart)
    assert len(chart.vconcat) == 3
    chart &= chart4
    assert len(chart.vconcat) == 4
Exemple #11
0
def test_geo_interface_feature_collection_gdf():
    geom = {
        'bbox': (19.89, -26.82, 29.43, -17.66),
        'features': [{
            'bbox': (19.89, -26.82, 29.43, -17.66),
            'geometry': {
                'coordinates': [[[6.90, 53.48], [5.98, 51.85], [6.07, 53.51],
                                 [6.90, 53.48]]],
                'type':
                'Polygon'
            },
            'id': '49',
            'properties': {
                'continent': 'Africa',
                'gdp_md_est': 35900.0,
                'id': 'BWA',
                'iso_a3': 'BWA',
                'name': 'Botswana',
                'pop_est': 2214858
            },
            'type': 'Feature'
        }],
        'type':
        'FeatureCollection'
    }
    feat = geom_obj(geom)

    with alt.data_transformers.enable(consolidate_datasets=False):
        spec = alt.Chart(feat).mark_geoshape().to_dict()
    assert spec['data']['values'][0]['id'] == 'BWA'
def test_geo_interface_feature_collection_gdf():
    geom = {
        "bbox": (19.89, -26.82, 29.43, -17.66),
        "features": [{
            "bbox": (19.89, -26.82, 29.43, -17.66),
            "geometry": {
                "coordinates": [[[6.90, 53.48], [5.98, 51.85], [6.07, 53.51],
                                 [6.90, 53.48]]],
                "type":
                "Polygon",
            },
            "id": "49",
            "properties": {
                "continent": "Africa",
                "gdp_md_est": 35900.0,
                "id": "BWA",
                "iso_a3": "BWA",
                "name": "Botswana",
                "pop_est": 2214858,
            },
            "type": "Feature",
        }],
        "type":
        "FeatureCollection",
    }
    feat = geom_obj(geom)

    with alt.data_transformers.enable(consolidate_datasets=False):
        spec = alt.Chart(feat).mark_geoshape().to_dict()
    assert spec["data"]["values"][0]["id"] == "BWA"
def test_display_options():
    chart = alt.Chart("data.csv").mark_point().encode(x="foo:Q")

    # check that there are no options by default
    with check_render_options():
        chart.display()

    # check that display options are passed
    with check_render_options(embed_options={"tooltip": False, "renderer": "canvas"}):
        chart.display("canvas", tooltip=False)

    # check that above options do not persist
    with check_render_options():
        chart.display()

    # check that display options augment rather than overwrite pre-set options
    with alt.renderers.enable(embed_options={"tooltip": True, "renderer": "svg"}):
        with check_render_options(embed_options={"tooltip": True, "renderer": "svg"}):
            chart.display()

        with check_render_options(
            embed_options={"tooltip": True, "renderer": "canvas"}
        ):
            chart.display("canvas")

    # check that above options do not persist
    with check_render_options():
        chart.display()
Exemple #14
0
def basic_chart():
    data = pd.DataFrame({
        'a': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
        'b': [28, 55, 43, 91, 81, 53, 19, 87, 52]
    })

    return alt.Chart(data).mark_bar().encode(x='a', y='b')
Exemple #15
0
def test_selection():
    # test instantiation of selections
    interval = alt.selection_interval(name="selec_1")
    assert interval.selection.type == "interval"
    assert interval.name == "selec_1"

    single = alt.selection_single(name="selec_2")
    assert single.selection.type == "single"
    assert single.name == "selec_2"

    multi = alt.selection_multi(name="selec_3")
    assert multi.selection.type == "multi"
    assert multi.name == "selec_3"

    # test adding to chart
    chart = alt.Chart().add_selection(single)
    chart = chart.add_selection(multi, interval)
    assert set(chart.selection.keys()) == {"selec_1", "selec_2", "selec_3"}

    # test logical operations
    assert isinstance(single & multi, alt.Selection)
    assert isinstance(single | multi, alt.Selection)
    assert isinstance(~single, alt.Selection)
    assert isinstance((single & multi)[0].group, alt.SelectionAnd)
    assert isinstance((single | multi)[0].group, alt.SelectionOr)
    assert isinstance((~single)[0].group, alt.SelectionNot)

    # test that default names increment (regression for #1454)
    sel1 = alt.selection_single()
    sel2 = alt.selection_multi()
    sel3 = alt.selection_interval()
    names = {s.name for s in (sel1, sel2, sel3)}
    assert len(names) == 3
Exemple #16
0
def test_selection_property():
    sel = alt.selection_interval()
    chart = alt.Chart('data.csv').mark_point().properties(
        selection=sel
    )

    assert list(chart['selection'].keys()) == [sel.name]
Exemple #17
0
def test_filter_transform_selection_predicates():
    selector1 = alt.selection_interval(name='s1')
    selector2 = alt.selection_interval(name='s2')
    base = alt.Chart('data.txt').mark_point()

    chart = base.transform_filter(selector1)
    assert chart.to_dict()['transform'] == [{'filter': {'selection': 's1'}}]

    chart = base.transform_filter(~selector1)
    assert chart.to_dict()['transform'] == [{'filter': {'selection': {'not': 's1'}}}]

    chart = base.transform_filter(selector1 & selector2)
    assert chart.to_dict()['transform'] == [{'filter': {'selection': {'and': ['s1', 's2']}}}]

    chart = base.transform_filter(selector1 | selector2)
    assert chart.to_dict()['transform'] == [{'filter': {'selection': {'or': ['s1', 's2']}}}]

    chart = base.transform_filter(selector1 | ~selector2)
    assert chart.to_dict()['transform'] == [{'filter': {'selection': {'or': ['s1', {'not': 's2'}]}}}]

    chart = base.transform_filter(~selector1 | ~selector2)
    assert chart.to_dict()['transform'] == [{'filter': {'selection': {'or': [{'not': 's1'}, {'not': 's2'}]}}}]

    chart = base.transform_filter(~(selector1 & selector2))
    assert chart.to_dict()['transform'] == [{'filter': {'selection': {'not': {'and': ['s1', 's2']}}}}]        
Exemple #18
0
def _make_chart_type(chart_type):
    data = pd.DataFrame({
        'x': [28, 55, 43, 91, 81, 53, 19, 87],
        'y': [43, 91, 81, 53, 19, 87, 52, 28],
        'color': list('AAAABBBB'),
    })
    base = alt.Chart(data).mark_point().encode(
        x='x',
        y='y',
        color='color',
    )

    if chart_type in ['layer', 'hconcat', 'vconcat', 'concat']:
        func = getattr(alt, chart_type)
        return func(base.mark_square(), base.mark_circle())
    elif chart_type == 'facet':
        return base.facet('color')
    elif chart_type == 'facet_encoding':
        return base.encode(facet='color')
    elif chart_type == 'repeat':
        return base.encode(
            alt.X(alt.repeat(), type='quantitative')
        ).repeat(
            ['x', 'y']
        )
    elif chart_type == 'chart':
        return base
    else:
        raise ValueError("chart_type='{}' is not recognized".format(chart_type))
Exemple #19
0
def test_chart_operations():
    data = pd.DataFrame({'x': pd.date_range('2012', periods=10, freq='Y'),
                         'y': range(10),
                         'c': list('abcabcabca')})
    chart1 = alt.Chart(data).mark_line().encode(x='x', y='y', color='c')
    chart2 = chart1.mark_point()
    chart3 = chart1.mark_circle()
    chart4 = chart1.mark_square()

    chart = chart1 + chart2 + chart3
    assert isinstance(chart, alt.LayerChart)
    assert len(chart.layer) == 3
    chart += chart4
    assert len(chart.layer) == 4

    chart = chart1 | chart2 | chart3
    assert isinstance(chart, alt.HConcatChart)
    assert len(chart.hconcat) == 3
    chart |= chart4
    assert len(chart.hconcat) == 4

    chart = chart1 & chart2 & chart3
    assert isinstance(chart, alt.VConcatChart)
    assert len(chart.vconcat) == 3
    chart &= chart4
    assert len(chart.vconcat) == 4
Exemple #20
0
def _make_chart_type(chart_type):
    data = pd.DataFrame({
        "x": [28, 55, 43, 91, 81, 53, 19, 87],
        "y": [43, 91, 81, 53, 19, 87, 52, 28],
        "color": list("AAAABBBB"),
    })
    base = (alt.Chart(data).mark_point().encode(
        x="x",
        y="y",
        color="color",
    ))

    if chart_type in ["layer", "hconcat", "vconcat", "concat"]:
        func = getattr(alt, chart_type)
        return func(base.mark_square(), base.mark_circle())
    elif chart_type == "facet":
        return base.facet("color")
    elif chart_type == "facet_encoding":
        return base.encode(facet="color")
    elif chart_type == "repeat":
        return base.encode(alt.X(alt.repeat(),
                                 type="quantitative")).repeat(["x", "y"])
    elif chart_type == "chart":
        return base
    else:
        raise ValueError(
            "chart_type='{}' is not recognized".format(chart_type))
Exemple #21
0
def test_facet_parse_data():
    data = pd.DataFrame({"x": range(5), "y": range(5), "row": list("abcab")})
    chart = (alt.Chart(data).mark_point().encode(x="x", y="y:O").facet(
        row="row", column="column:O"))
    with alt.data_transformers.enable(consolidate_datasets=False):
        dct = chart.to_dict()
    assert "values" in dct["data"]
    assert "data" not in dct["spec"]
    assert dct["facet"] == {
        "column": {
            "field": "column",
            "type": "ordinal"
        },
        "row": {
            "field": "row",
            "type": "nominal"
        },
    }

    with alt.data_transformers.enable(consolidate_datasets=True):
        dct = chart.to_dict()
    assert "datasets" in dct
    assert "name" in dct["data"]
    assert "data" not in dct["spec"]
    assert dct["facet"] == {
        "column": {
            "field": "column",
            "type": "ordinal"
        },
        "row": {
            "field": "row",
            "type": "nominal"
        },
    }
Exemple #22
0
def test_facet_parse_data():
    data = pd.DataFrame({'x': range(5), 'y': range(5), 'row': list('abcab')})
    chart = alt.Chart(data).mark_point().encode(x='x', y='y:O').facet(
        row='row', column='column:O')
    with alt.data_transformers.enable(consolidate_datasets=False):
        dct = chart.to_dict()
    assert 'values' in dct['data']
    assert 'data' not in dct['spec']
    assert dct['facet'] == {
        'column': {
            'field': 'column',
            'type': 'ordinal'
        },
        'row': {
            'field': 'row',
            'type': 'nominal'
        }
    }

    with alt.data_transformers.enable(consolidate_datasets=True):
        dct = chart.to_dict()
    assert 'datasets' in dct
    assert 'name' in dct['data']
    assert 'data' not in dct['spec']
    assert dct['facet'] == {
        'column': {
            'field': 'column',
            'type': 'ordinal'
        },
        'row': {
            'field': 'row',
            'type': 'nominal'
        }
    }
Exemple #23
0
def basic_chart():
    data = pd.DataFrame({
        "a": ["A", "B", "C", "D", "E", "F", "G", "H", "I"],
        "b": [28, 55, 43, 91, 81, 53, 19, 87, 52],
    })

    return alt.Chart(data).mark_bar().encode(x="a", y="b")
Exemple #24
0
def test_chart_data_types():
    Chart = lambda data: alt.Chart(data).mark_point().encode(x='x:Q', y='y:Q')

    # Url Data
    data = '/path/to/my/data.csv'
    dct = Chart(data).to_dict()
    assert dct['data'] == {'url': data}

    # Dict Data
    data = {"values": [{"x": 1, "y": 2}, {"x": 2, "y": 3}]}
    with alt.data_transformers.enable(consolidate_datasets=False):
        dct = Chart(data).to_dict()
    assert dct['data'] == data

    with alt.data_transformers.enable(consolidate_datasets=True):
        dct = Chart(data).to_dict()
    name = dct['data']['name']
    assert dct['datasets'][name] == data['values']

    # DataFrame data
    data = pd.DataFrame({"x": range(5), "y": range(5)})
    with alt.data_transformers.enable(consolidate_datasets=False):
        dct = Chart(data).to_dict()
    assert dct['data']['values'] == data.to_dict(orient='records')

    with alt.data_transformers.enable(consolidate_datasets=True):
        dct = Chart(data).to_dict()
    name = dct['data']['name']
    assert dct['datasets'][name] == data.to_dict(orient='records')

    # Named data object
    data = alt.NamedData(name='Foo')
    dct = Chart(data).to_dict()
    assert dct['data'] == {'name': 'Foo'}
Exemple #25
0
def test_compound_add_selections(charttype):
    base = alt.Chart("data.csv").mark_point()
    selection = alt.selection_single()
    chart1 = charttype(base.add_selection(selection),
                       base.add_selection(selection))
    chart2 = charttype(base, base).add_selection(selection)
    assert chart1.to_dict() == chart2.to_dict()
def test_geo_interface_serializing_arrays_tuples():
    import array as arr

    geom = {
        "bbox": arr.array("d", [1, 2, 3, 4]),
        "geometry": {
            "coordinates": [
                tuple((
                    tuple((6.90, 53.48)),
                    tuple((5.98, 51.85)),
                    tuple((6.07, 53.51)),
                    tuple((6.90, 53.48)),
                ))
            ],
            "type":
            "Polygon",
        },
        "id": 27,
        "properties": {},
        "type": "Feature",
    }
    feat = geom_obj(geom)

    with alt.data_transformers.enable(consolidate_datasets=False):
        spec = alt.Chart(feat).mark_geoshape().to_dict()
    assert spec["data"]["values"]["geometry"]["coordinates"][0][0] == [
        6.9, 53.48
    ]
Exemple #27
0
def test_geo_interface_empty_feature_collection():
    geom = {"type": "FeatureCollection", "features": []}
    feat = geom_obj(geom)

    with alt.data_transformers.enable(consolidate_datasets=False):
        spec = alt.Chart(feat).mark_geoshape().to_dict()
    assert spec['data']['values'] == []
Exemple #28
0
def test_filter_transform_selection_predicates():
    selector1 = alt.selection_interval(name="s1")
    selector2 = alt.selection_interval(name="s2")
    base = alt.Chart("data.txt").mark_point()

    chart = base.transform_filter(selector1)
    assert chart.to_dict()["transform"] == [{"filter": {"selection": "s1"}}]

    chart = base.transform_filter(~selector1)
    assert chart.to_dict()["transform"] == [{"filter": {"selection": {"not": "s1"}}}]

    chart = base.transform_filter(selector1 & selector2)
    assert chart.to_dict()["transform"] == [
        {"filter": {"selection": {"and": ["s1", "s2"]}}}
    ]

    chart = base.transform_filter(selector1 | selector2)
    assert chart.to_dict()["transform"] == [
        {"filter": {"selection": {"or": ["s1", "s2"]}}}
    ]

    chart = base.transform_filter(selector1 | ~selector2)
    assert chart.to_dict()["transform"] == [
        {"filter": {"selection": {"or": ["s1", {"not": "s2"}]}}}
    ]

    chart = base.transform_filter(~selector1 | ~selector2)
    assert chart.to_dict()["transform"] == [
        {"filter": {"selection": {"or": [{"not": "s1"}, {"not": "s2"}]}}}
    ]

    chart = base.transform_filter(~(selector1 & selector2))
    assert chart.to_dict()["transform"] == [
        {"filter": {"selection": {"not": {"and": ["s1", "s2"]}}}}
    ]
Exemple #29
0
def test_geo_interface_polygon_feature():
    geom = {
        "coordinates": [[(0, 0), (0, 2), (2, 2), (2, 0), (0, 0)]],
        "type": "Polygon"
    }
    feat = geom_obj(geom)

    with alt.data_transformers.enable(consolidate_datasets=False):
        spec = alt.Chart(feat).mark_geoshape().to_dict()
    assert spec['data']['values']['type'] == 'Feature'
Exemple #30
0
def test_add_selection():
    selections = [
        alt.selection_interval(),
        alt.selection_single(),
        alt.selection_multi(),
    ]
    chart = (alt.Chart().mark_point().add_selection(
        selections[0]).add_selection(selections[1], selections[2]))
    expected = {s.name: s.selection for s in selections}
    assert chart.selection == expected