Hacker News new | ask | show | jobs
by lcvriend 849 days ago
If we only look at the simplest example then I would agree that there is not much difference. But more complicated plots will require you to write code in a more verbose and imperative fashion when using matplotlib.

Take a faceted plot like this scatter matrix [1] and try to plot it in matplotlib. You would need to set up the grid using subplots, then define the combinations you want and finally write logic to fill each subplot. The vega/altair code is much more declarative. You just tell it what needs to be in the rows/columns and vega/altair takes care of the rest.

[1]: https://altair-viz.github.io/gallery/scatter_matrix.html

1 comments

Mirror, mirror on the wall, what’s the most declarative dataviz programming language of all? :-)

  *** SAS SCATTER MATRIX EXAMPLE ***
  proc sgscatter data=sashelp.cars;
  matrix Horsepower Acceleration Miles_per_Gallon / group=Origin;

  *** ALTAIR SCATTER MARIX EXAMPLE ***
  import altair as alt
  from vega_datasets import data

  source = data.cars()

  alt.Chart(source).mark_circle().encode(
    alt.X(alt.repeat("column"), type='quantitative'),
    alt.Y(alt.repeat("row"), type='quantitative'),
    color='Origin:N'
  ).properties(
    width=150,
    height=150
  ).repeat(
    row=['Horsepower', 'Acceleration', 'Miles_per_Gallon'],
    column=['Miles_per_Gallon', 'Acceleration', 'Horsepower']
  ).interactive()
Well, there also is for example `pandas.plotting.scatter_matrix()` [1] which is built on top of matplotlib. I suppose the question is how does SAS or any other alternative compare to vega/altair when the desired output is less standard.

[1]: http://pandas.pydata.org/pandas-docs/stable/reference/api/pa...

If you are interested in similar shortcuts for repeated charts in Altair, I'm experimenting a bit with such a syntax in the package altair-ally https://joelostblom.github.io/altair_ally/examples.html. Feel free to try it out and leave feedback!

(disclaimer: I'm a co-maintainer of Altair)