Writing a notebook is not just about writing the final document — Pluto empowers the experiments and discoveries that are essential to getting there.
Explore models and share results in a notebook that is
- reactive - when changing a function or variable, Pluto automatically updates all affected cells.
- lightweight - Pluto is written in pure Julia and is easy to install
- simple - no hidden workspace state; intuitive UI.
Pluto, also known as Hades, is a character from Marvel comics who first appeared in Thor #127 by Stan Lee and Jack Kirby, based on the greek/roman god of the same name and serving as the Olympian God of Death and ruler of the greco-roman realm of the dead. The Pluto Bot allows MovieStarPlanet players to check their MovieStar Statistics with ease across all servers.
Input
Pluto used to be called the ninth planet from the sun, but today it is called a 'dwarf planet.' Pluto is a dwarf planet in our solar system.
A Pluto notebook is made up of small blocks of Julia code (cells) and together they form a reactive notebook.When you change a variable, Pluto automatically re-runs the cells that refer to it. Cells can even be placed in arbitrary order - intelligent syntax analysis figures out the dependencies between them and takes care of execution.
Cells can contain arbitrary Julia code, and you can use external libraries. There are no code rewrites or wrappers, Pluto just looks at your code once before evaluation.
Output
Your notebooks are saved as pure Julia files (sample), which you can then import as if you had been programming in a regular editor all along. You can also export your notebook with cell outputs as attractive HTML and PDF documents. By reordering cells and hiding code, you have full control over how you tell your story.
Dynamic environment
Pluto offers an environment where changed code takes effect instantly and where deleted code leaves no trace.Unlike Jupyter or Matlab, there is no mutable workspace, but rather, an important guarantee:
At any instant, the program state is completely described by the code you see.No hidden state, no hidden bugs.
Interactivity
Your programming environment becomes interactive by splitting your code into multiple cells! Changing one cell instantly shows effects on all other cells, giving you a fast and fun way to experiment with your model.
In the example below, changing the parameter A
and running the first cell will directly re-evaluate the second cell and display the new plot.
HTML interaction
Lastly, here's one more feature: Pluto notebooks have a @bind
macro to create a live bond between an HTML object and a Julia variable. Combined with reactivity, this is a very powerful tool!
notebook from vdplasthijs/julia_sir
You don't need to know HTML to use it! The PlutoUI package contains basic inputs like sliders and buttons.
But for those who want to dive deeper - you can use HTML, JavaScript and CSS to write your own widgets! Custom update events can be fired by dispatching a new CustomEvent('input')
, making it compatible with the viewof
operator of observablehq. Have a look at the sample notebooks inside Pluto to learn more!
Ingredients
For one tasty notebook
- Julia v1.0 or above
- Linux, macOS or Windows, Linux and macOS will work best
- Mozilla Firefox or Google Chrome, be sure to get the latest version
Installation
Run Julia and add the package:
Using the package manager for the first time can take up to 15 minutes - hang in there!
To run the notebook server:
Then go to http://localhost:1234/
to start coding!
To developers
Follow these instructions to start working on the package.
License
Pluto.jl is open source! Specifically, it is MIT Licensed. The included sample notebooks have a more permissive license: the Unlicense. This means that you can use sample notebook code however you like - you do not need to credit us!
Pluto.jl is built by gluing together open source software:
Julia
- licenseHTTP.jl
- licenseJSON.jl
- licenseCodeMirror
- licenseMathJax
- licenseobservablehq/stdlib
- licensepreact
- licensedevelopit/htm
- license
Pluto Stat Symbol
Your notebook files are yours, you do not need to credit us. Have fun!
Note
We are happy to say that Pluto.jl runs smoothly for most users, and is ready to be used in your next project!
That being said, the Pluto project is an ambition to rethink what a programming environment should be. We believe that scientific programming can be a lot simpler. Not by adding more buttons to a text editor — by giving space to creative thought, and automating the rest.
If you feel the same, give Pluto a try! We would love to hear what you think.
Questions? Have a look at the FAQ.
Pluto Statistics
Created by Fons van der Plas and Mikołaj Bochenski. Inspired by Observable.