"""
Brushing Scatter Plot to show data on a table
---------------------------------
A scatter plot of the cars dataset, with data tables for horsepower, MPG, and origin. 
The tables update toreflect the selection on the scatter plot.
"""
# category: scatter plots

import altair as alt
from vega_datasets import data

source = data.cars()

# Brush for selection
brush = alt.selection(type='interval')

# Scatter Plot
points = alt.Chart().mark_point().encode(
    x='Horsepower:Q',
    y='Miles_per_Gallon:Q',
    color=alt.condition(brush, 'Cylinders:O', alt.value('grey'))
).add_selection(brush)

# Base chart for data tables
ranked_text = alt.Chart().mark_text().encode(
    y=alt.Y('row_number:O',axis=None)
).transform_window(
    row_number='row_number()'
).transform_filter(
    brush
).transform_window(
    rank='rank(row_number)'
).transform_filter(
    alt.datum.rank<20
)

# Data Tables
horsepower = ranked_text.encode(text='Horsepower:N').properties(title='Horsepower')
mpg = ranked_text.encode(text='Miles_per_Gallon:N').properties(title='MPG')
origin = ranked_text.encode(text='Origin:N').properties(title='Origin')
text = alt.hconcat(horsepower, mpg, origin) # Combine data tables

# Build chart
alt.hconcat(
    points,
    text,
    data=source
).resolve_legend(
    color="independent"
)

@@ -734,60 +734,8 @@
 e)%0D%0A
-).transform_window(%0D%0A    row_number='row_number()'%0D%0A
 ).tr
@@ -792,18 +792,19 @@
    r
-ank='rank(
+ow_number='
 row_
@@ -809,16 +809,17 @@
 w_number
+(
 )'%0D%0A).tr
@@ -850,19 +850,25 @@
 .datum.r
-ank
+ow_number
 %3C20%0D%0A)%0D%0A

Remove unnecessary transform_calculate