November 22, 2018
StatsMakie: elegant data visualizations in Julia
Lately I have finally got around to start implementing an old project to simplify data visualizations in Julia. The idea is to combine what is generally called "Grammar of Graphics", that is to say the ability to cleanly express in a plot how to translate variables from a dataset into graphical attributes, with the new interactive plotting package Makie. This effort led to the package StatsMakie and this blog post gives a general overview on how to use it.
August 14, 2018
Sputnik project, final update
This post is a summary of my Google Summer of Code work on project Sputnik: a GUI toolkit based on web technology to analyze data in Julia.
The project had several distinct parts:
Building tools creating UI widgets in Julia Pre-GSoC state of the art While several packages existed already (namely Interact and InteractNext) to create web based widgets in Julia, they both had serious limitations.
Interact could only be run in a Jupyter Notebook and was therefore not suitable to create local electron apps or to serve apps remotely.
July 19, 2018
Sputnik project, fourth update
The new Interact framework allows packages to define "interactivity recipes" taking only a small dependency on the Widgets.jl package.
As an example, let's see how to add a simle recipe for interactive partition Plots in JuliaDB. JuliaDB already offers static partition plots: the user specifies the x axis, potentially the y axis, the statistics (Mean(), Extrema(), Hist(25), etc...) and the number of partition and gets the plot as output.
This is very user friendly but still require a bit of typing and could be annoying for datasets with many columns, and we'd like to create a GUI for it.
July 6, 2018
Sputnik project, third update
Create nestable custom widgets in Julia Since the last update I have mainly been working on tools for web app creation in Julia. The work has been on two fronts:
on the techical side, I transitioned from using Vue.js to using Knockout.js to sync Julia values to Javascript values
on the user facing side, I've been working on a framework for custom widgets creation, so that using a @widget macro users can define their own custom widgets / recipes to visualize their custom types with simple code
June 6, 2018
Sputnik project, second update
Building a toolkit to create web-based GUIs in Julia The last two week of my GSoC project were mostly dedicated to developing tools to build GUIs in Julia.
As most of these tools are getting released, I'll try to give an overview of how they can be used, what they can achieve and what are the current challenges.
A little bit of history Most Julia users are probably familiar with Interact, a package to add reactive sliders, togglebuttons and other widgets to Jupyter notebooks in Julia.
May 19, 2018
Sputnik project, first update
Sputnik: a web app to look at your data This is the first of a series of blog updates about my Google Summer of Code project. I'll be working during Summer on a Julia based web app for data analysis and visualizations. So far I have the core structure and am exploring ways to make the interface more intuitive and user-friendly.
Loading the data To load the data, I'm using a simple file picker dialog or a dropdown menu to choose among previously saved datasets:
January 21, 2018
Manipulating data: JuliaDB
JuliaDB tutorial Introduction From now on I'll focus on more advanced Julia tutorials. Here I'll talk about working with data using the JuliaDB package to reproduce a well known tutorial. This tutorial is available as a Jupyter notebook here.
Getting the data The data is some example flight dataset that you can find here. Simply open the link and choose Save as from the File menu in your browser to save the data to a folder on your computer.
January 20, 2018
Chapter VIII: Functions: can we make our own?
Functions So far we've used many built-in functions from Julia, as well as some provided by external packages such as UnicodePlots. Julia allows us to write our own functions: before learning how to do that, let's see why that would be useful.
So far we have specialized on the Fibonacci sequence, but many other sequences are possible.
Let's try and compute a different sequence. As a reminder, this is how we computed the first 20 Fibonacci:
January 19, 2018
Chapter VII: Plots and dots
Visualizing our results (and a trick with a dot) Plotting is not implemented in Base Julia and to visualize our results we will need to install an external package. There are many options but, as this is an introductory post, I'll focus on the simplest option: UnicodePlots. This package creates plots inside your terminal using symbols from Unicode. It is useful for quick visualizations and has a nice vintage look.
January 18, 2018
Chapter VI: Arrays and the for loop
Storing what we have computed An inconvenience with the techniques we've used so far to compute the Fibonacci sequence is that we've never stored any result. Fortunately Julia provides a structure to do that, called Arrays. They are created using square brackets and separating values by commas. For example:
julia> v = [7, 3] 2-element Array{Int64,1}: 7 3 is a list of values, the first is 7 and the second is 3.