altair icon indicating copy to clipboard operation
altair copied to clipboard

Extend candidate aliases

Open mattijn opened this issue 2 years ago • 4 comments

As was originally posted by @mattijn in https://github.com/altair-viz/altair/issues/2732#issuecomment-1335673267:

There are more candidate aliases I think?

import requests as r
import re
vl_scheme = r.get('https://vega.github.io/schema/vega-lite/v5.json').json()
scheme_str = str(vl_scheme['definitions'])
col = []
for word in re.findall(r"\w+", scheme_str):
    if 'Params' in word:
        col.append(word)
list(set(col))

Returns 10 candidates:

['TimeUnitParams',
 'TitleParams',
 'SchemeParams',
 'GraticuleParams',
 'SequenceParams',
 'BinParams',
 'ImputeParams',
 'ScaleBinParams',
 'ScaleInterpolateParams',
 'AutoSizeParams']

I think we can extend the aliases to all of these. I was trying:

alt.Color('value:Q').scale(scheme=alt.Scheme('viridis'))

But hit an:

AttributeError: module 'altair' has no attribute 'Scheme'

mattijn avatar Feb 19 '23 18:02 mattijn

Hi @mattijn, that sounds fine to me. The reason I proposed aliases for some of these like BinParams but not others was just for symmetry with the Property Setters. For example, I believe there is a bin Property Setter, but not a scheme Property Setter. No other opinion on my end, just wanted to record this.

ChristopherDavisUCI avatar Feb 19 '23 19:02 ChristopherDavisUCI

Thanks for the clarification @ChristopherDavisUCI, that make sense for #2732. The remaining properties are indeed not available as Property Setter, but it is still useful to have an alias I think.

mattijn avatar Feb 19 '23 20:02 mattijn

In addition to what @ChristopherDavisUCI mentioned, I think it does make sense to include alias for the classes that we expect users to directly interface with (and maybe hiding the *Params version from tab completion for those that have shortcuts?). For example, do we need aliases for 'GraticuleParams', 'SequenceParams', since there is already alt.sequence and alt.graticule?

joelostblom avatar Feb 19 '23 21:02 joelostblom

Maybe we should also consider adding shortcuts for some of the *Config classes? Maybe not as important but I just learned in https://github.com/altair-viz/altair/issues/3216#issuecomment-1747437368 that we can do something like

alt.Chart(iris, view=alt.ViewConfig(strokeWidth=0))

Which might seem inconsistent with that if we modify say the height we can use alt.Step instead of alt.StepConfig

alt.Chart(iris, height=alt.Step(40))

So I wonder if it should also be called just alt.View. However, there are a lot of these config options, so maybe there is a chance of name collisions with other objects and maybe Config is fundamentally something different so it makes sense to be explicit in the name?

import requests as r
import re
vl_scheme = r.get('https://vega.github.io/schema/vega-lite/v5.json').json()
scheme_str = str(vl_scheme['definitions'])
col = []
for word in re.findall(r"\w+", scheme_str):
    if 'Config' in word:
        col.append(word)
list(set(col))
['RectConfig',
 'ProjectionConfig',
 'BarConfig',
 'LegendConfig',
 'AreaConfig',
 'PointSelectionConfig',
 'AnyMarkConfig',
 'MarkConfig',
 'HeaderConfig',
 'ScaleConfig',
 'ErrorBarConfig',
 'BrushConfig',
 'BoxPlotConfig',
 'TitleConfig',
 'PointSelectionConfigWithoutType',
 'IntervalSelectionConfigWithoutType',
 'Config',
 'CompositionConfig',
 'SelectionConfig',
 'LineConfig',
 'AxisConfig',
 'ErrorBandConfig',
 'FormatConfig',
 'TickConfig',
 'StyleConfigIndex',
 'IntervalSelectionConfig',
 'RangeConfig',
 'ViewConfig']

joelostblom avatar Oct 04 '23 18:10 joelostblom