'Is there a way to make a bubble plot in Altair which has circles that aren't filled?

I am trying to develop a new data visualization/graphic, and the bubble plot available here is very similar to what I am trying to make in shape:

https://altair-viz.github.io/gallery/table_bubble_plot_github.html

However, the graph I am trying to make involves some shaded bubbles and some filled in. Is there a way to edit this graph so that the bubble marks are not always filled?

Thank you!



Solution 1:[1]

You could use the fillOpacity encoding linked to a field in your data and then set the domain and range of its scale, so that only the values you want have a completely transparent fill:

import altair as alt
from vega_datasets import data

source = data.github.url

fill_threshold = 12

alt.Chart(source).mark_circle(
    stroke='black'
).encode(
    x='hours(time):O',
    y='day(time):O',
    size='sum(count):Q',
    fillOpacity=alt.FillOpacity(
        'sum(count):Q',
        scale=alt.Scale(
            domain=[fill_threshold, fill_threshold + 0.01],
            range=[0 ,1]
        )
    )
)

enter image description here

Solution 2:[2]

You can use the fillOpacity and stroke mark properties to make the marks into circles with no fill. For example:

import altair as alt
from vega_datasets import data

source = data.github.url

alt.Chart(source).mark_circle(
    fillOpacity=0,
    stroke='black'
).encode(
    x='hours(time):O',
    y='day(time):O',
    size='sum(count):Q',
)

enter image description here

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 joelostblom
Solution 2 jakevdp