All Projects → vegas-viz → Vegas

vegas-viz / Vegas

Licence: mit
The missing MatPlotLib for Scala + Spark

Programming Languages

scala
5932 projects

Projects that are alternatives of or similar to Vegas

Tweenr
Interpolate your data
Stars: ✭ 376 (-46.97%)
Mutual labels:  plotting
Line Charts
A library for plotting line charts in SVG. Written in all Elm.
Stars: ✭ 445 (-37.24%)
Mutual labels:  plotting
Mpmath
Python library for arbitrary-precision floating-point arithmetic
Stars: ✭ 511 (-27.93%)
Mutual labels:  plotting
Pandastable
Table analysis in Tkinter using pandas DataFrames.
Stars: ✭ 376 (-46.97%)
Mutual labels:  plotting
Metaflow
🚀 Build and manage real-life data science projects with ease!
Stars: ✭ 5,108 (+620.45%)
Mutual labels:  datascience
Elm Charts
Create SVG charts in Elm.
Stars: ✭ 482 (-32.02%)
Mutual labels:  plotting
Hvplot
A high-level plotting API for pandas, dask, xarray, and networkx built on HoloViews
Stars: ✭ 368 (-48.1%)
Mutual labels:  plotting
Ggthemr
Themes for ggplot2.
Stars: ✭ 697 (-1.69%)
Mutual labels:  plotting
Socios Brasil
Captura os dados de sócios das empresas brasileiras na Receita Federal e exporta para um formato legível por humanos
Stars: ✭ 445 (-37.24%)
Mutual labels:  datascience
Jupyter Notify
A Jupyter Notebook magic for browser notifications of cell completion
Stars: ✭ 506 (-28.63%)
Mutual labels:  datascience
Chartpy
Easy to use Python API wrapper to plot charts with matplotlib, plotly, bokeh and more
Stars: ✭ 426 (-39.92%)
Mutual labels:  plotting
Sjplot
sjPlot - Data Visualization for Statistics in Social Science
Stars: ✭ 432 (-39.07%)
Mutual labels:  plotting
Or Pandas
【运筹OR帷幄|数据科学】pandas教程系列电子书
Stars: ✭ 492 (-30.61%)
Mutual labels:  datascience
See
🎨 Visualisation toolbox for beautiful and publication-ready figures
Stars: ✭ 377 (-46.83%)
Mutual labels:  plotting
Clip
Create charts from the command line
Stars: ✭ 5,111 (+620.87%)
Mutual labels:  plotting
Dataframe Js
A javascript library providing a new data structure for datascientists and developpers
Stars: ✭ 376 (-46.97%)
Mutual labels:  datascience
Weir
A system for making generative systems
Stars: ✭ 451 (-36.39%)
Mutual labels:  plotting
Ai Series
📚 [.md & .ipynb] Series of Artificial Intelligence & Deep Learning, including Mathematics Fundamentals, Python Practices, NLP Application, etc. 💫 人工智能与深度学习实战,数理统计篇 | 机器学习篇 | 深度学习篇 | 自然语言处理篇 | 工具实践 Scikit & Tensoflow & PyTorch 篇 | 行业应用 & 课程笔记
Stars: ✭ 702 (-0.99%)
Mutual labels:  datascience
Business Machine Learning
A curated list of practical business machine learning (BML) and business data science (BDS) applications for Accounting, Customer, Employee, Legal, Management and Operations (by @firmai)
Stars: ✭ 575 (-18.9%)
Mutual labels:  datascience
Brachiograph
BrachioGraph is an ultra-cheap (total cost of materials: €14) plotter that can be built with minimal skills.
Stars: ✭ 498 (-29.76%)
Mutual labels:  plotting

Vegas

Vegas

TravisCI codecov

Vegas aims to be the missing MatPlotLib for the Scala and Spark world. Vegas wraps around Vega-Lite but provides syntax more familiar (and type checked) for use within Scala.

Quick start

Add the following jar as an SBT dependency

libraryDependencies += "org.vegas-viz" %% "vegas" % {vegas-version}

And then use the following code to render a plot into a pop-up window (see below for more details on controlling how and where Vegas renders).

import vegas._
import vegas.render.WindowRenderer._

val plot = Vegas("Country Pop").
  withData(
    Seq(
      Map("country" -> "USA", "population" -> 314),
      Map("country" -> "UK", "population" -> 64),
      Map("country" -> "DK", "population" -> 80)
    )
  ).
  encodeX("country", Nom).
  encodeY("population", Quant).
  mark(Bar)

plot.show

"Readme Chart 1"

See further examples here

Rendering

Vegas provides several options for rendering plots. The primary focus is using Vegas within interactive notebook environments, such as Jupyter and Zeppelin. Rendering is provided via an implicit instance of ShowRender, which tells Vegas how to display the plot in a particular environment. The default instance of ShowRender uses a macro which attempts to guess your environment, but if for some reason that fails, you can specify your own instance:

// for outputting HTML, provide a function String => Unit which will receive the HTML for the plot
// and use vegas.render.ShowHTML to create an instance for it
implicit val renderer = vegas.render.ShowHTML(str => println(s"The HTML is $str"))

// to specify a function that receives the SpecBuilder instead, use vegas.render.ShowRender.using
implicit val renderer = vegas.render.ShowRender.using(sb => println(s"The SpecBuilder is $sb"))

The following examples describe some common cases; these should be handled by the default macro, but are useful to see (in case you need to construct your own instance of ShowRender):

Notebooks

Jupyter - Scala

If you're using jupyter-scala, then can include the following in your notebook before using Vegas.

import $ivy.`org.vegas-viz::vegas:{vegas-version}`
implicit val render = vegas.render.ShowHTML(publish(_))

Jupyter - Apache Toree

And if you're using Apache Toree, then this:

%AddDeps org.vegas-viz vegas_2.11 {vegas-version} --transitive
implicit val render = vegas.render.ShowHTML(kernel.display.content("text/html", _))

Zeppelin

If you're using Apache Zeppelin:

%dep
z.load("org.vegas-viz:vegas_2.11:{vegas-version}")
implicit val render = vegas.render.ShowHTML(s => print("%html " + s))

The last line in each of the above is required to connect Vegas to the notebook's HTML renderer (so that the returned HTML is rendered instead of displayed as a string).

See a comprehensive list example notebook of plots here

Standalone

Vegas can also be used to produce standalone HTML or even render plots within a built-in display app (useful if you wanted to display plots for a command-line-app).

The construction of the plot is independent from the rendering strategy: the same plot can be rendered as HTML or in a Window simply by importing a different renderer in the scope.

Note that the rendering examples below are wrapped in separate functions to avoid ambiguous implicit conversions if they were imported in the same scope.

A plot is defined as:

import vegas._

val plot = Vegas("Country Pop").
  withData(
    Seq(
      Map("country" -> "USA", "population" -> 314),
      Map("country" -> "UK", "population" -> 64),
      Map("country" -> "DK", "population" -> 80)
    )
  ).
  encodeX("country", Nom).
  encodeY("population", Quant).
  mark(Bar)

HTML

The following renders the plot as HTML (which prints to the console).

def renderHTML = {
  println(plot.html.pageHTML) // a complete HTML page containing the plot
  println(plot.html.frameHTML("foo")) // an iframe containing the plot
}

Window

Vegas also contains a self-contained display app for displaying plots (internally it uses JavaFX's HTML renderer). The following demonstrates this and can be used from the command line.

def renderWindow = {
  plot.window.show
}

Make sure JavaFX is installed on your system or ships with your JDK distribution.

JSON

You can print the JSON containing the Vega-lite spec, without importing any renderer in the scope.

println(plot.toJson)

The output JSON can be copy-pasted into the Vega-lite editor.

Spark integration

Vegas comes with an optional extension package that makes it easier to work with Spark DataFrames. First, you'll need an extra import

libraryDependencies += "org.vegas-viz" %% "vegas-spark" % "{vegas-version}"
import vegas.sparkExt._

This adds the following new method:

withDataFrame(df: DataFrame)

Each DataFrame column is exposed as a field keyed using the column's name.

Flink integration

Vegas also comes with an optional extension package that makes it easier to work with Flink DataSets. You'll also need to import:

libraryDependencies += "org.vegas-viz" %% "vegas-flink" % "{vegas-version}"

To use:

import vegas.flink.Flink._

This adds the following method:

withData[T <: Product](ds: DataSet[T])

Similarly, to the RDD concept in Spark, a DataSet of case classes or tuples is expected and reflection is used to map the case class' fields to fields within Vegas. In the case of tuples you can encode the fields using "_1", "_2" and so on.

Plot Options

TODO

Contributing

See the contributing guide for more information on contributing bug fixes and features.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].