What is the difference between SortField and EncodingSortField? I am interested in sorting the markers of an axis, and I often see these two coming up in examples and discussions (example for EncodingSortField, example for SortField).
I don't know how to parse the doc string for EncodingSortField:
A sort definition for sorting a discrete scale in an encoding field definition.
Compare with the doc string for SortField:
A sort definition for transform
Can you explain the difference between these two things? When should I choose to use EncodingSortField instead of SortField?
Although their names are similar, they have very different purposes and uses.
SortField is used to sort the underlying data within transformations like aggregations, window operations, etc., before visualising it.
For example:
import altair as alt
import pandas as pd
data = pd.DataFrame({
'date': ['2021-01-01', '2021-01-02', '2021-01-03'],
'sales': [30, 20, 50]
})
chart = alt.Chart(data).transform_window(
sort=[alt.SortField('date')],
cumulative_sales='sum(sales)',
frame=[None, 0]
).mark_line().encode(
x='date:T',
y='cumulative_sales:Q'
)
chart
EncodingSortField sorts the presentation/encoding of the data on the chart axis as it is visualised.
For example:
import altair as alt
import pandas as pd
data = pd.DataFrame({
'category': ['A', 'B', 'C'],
'value': [3, 1, 2]
})
chart = alt.Chart(data).mark_bar().encode(
x=alt.X('category', sort=alt.EncodingSortField(field='value', order='ascending')),
y='value'
)
chart