Open-source notebook frontend

WLJS Notebook

Build interactive research notebooks and scientific tools with Wolfram Language

True 2D typeset input, live interactivity, local-first, Git-friendly, and powered by Wolfram Engine or Wolfram Kernel

Plot[1/x, {x,0,1}]
🪄

Create dynamic 3D plots quickly

Manipulate[Plot3D[  Sin[n x] Cos[n y], {x, -1, 1}, {y, -1, 1}], {n, 1, 5, 0.3}, ContinuousAction -> True]
Manipulate[Plot3D[  Sin[n x] Cos[n y], {x, -1, 1}, {y, -1, 1}], {n, 1, 5, 0.3}]
begin    using PlutoUI    using PlotlyJSend@bind n Slider(1:0.3:5; default=1, show_value=true)begin    xs = range(-1, 1; length=80)    ys = range(-1, 1; length=80)    zs = [sin(n * x) * cos(n * y) for y in ys, x in xs]    Plot(        surface(x=xs, y=ys, z=zs),        Layout(            height=700,            scene=attr(                xaxis_title="x",                yaxis_title="y",                zaxis_title="sin(n x) cos(n y)"            )        )    )end
import numpy as npimport plotly.graph_objects as goimport ipywidgets as widgetsfrom IPython.display import displayimport plotly.io as piopio.renderers.default = "iframe_connected"x = np.linspace(-1, 1, 80)y = np.linspace(-1, 1, 80)X, Y = np.meshgrid(x, y)def plot_surface(n):    Z = np.sin(n * X) * np.cos(n * Y)    fig = go.Figure(data=[go.Surface(x=x, y=y, z=Z)])    fig.update_layout(        height=700,        margin=dict(l=0, r=0, b=0, t=30),        scene=dict(            xaxis_title="x",            yaxis_title="y",            zaxis_title="sin(n x) cos(n y)",        ),    )    display(fig)n_slider = widgets.FloatSlider(    value=1,    min=1,    max=5,    step=0.3,    description="n",    continuous_update=True,    readout_format=".1f",)out = widgets.interactive_output(plot_surface, {"n": n_slider})display(widgets.VBox([n_slider, out]))
import marimo as moimport numpy as npimport plotly.graph_objects as gon_slider = mo.ui.slider(    start=1,    stop=5,    step=0.3,    value=1,    label="n",    show_value=True,    full_width=True,)n_slider_x = np.linspace(-1, 1, 80)_y = np.linspace(-1, 1, 80)_X, _Y = np.meshgrid(_x, _y)_Z = np.sin(n_slider.value * _X) * np.cos(n_slider.value * _Y)_fig = go.Figure(data=[go.Surface(x=_x, y=_y, z=_Z)])_fig.update_layout(    height=700,    margin=dict(l=0, r=0, b=0, t=30),    scene=dict(        xaxis_title="x",        yaxis_title="y",        zaxis_title="sin(n x) cos(n y)",    ),)mo.ui.plotly(_fig)

Digitally signed

Our releases are digitally signed and checked by SignPath Foundation and Apple.

Learn more about SignPath Foundation →
SignPath Foundation

Help WLJS grow

Share WLJS, improve the docs, contribute code, or support independent development. Every contribution helps more people discover and trust the project.

Licensing

WLJS Notebook is open-source software licensed under the AGPLv3.

While WLJS Notebook itself is licensed under AGPLv3, it requires Wolfram Engine to function. Wolfram Engine is a separate product with its own licensing terms. For the full WLJS Notebook license, visit our GitHub repository.

Are you a robot? Here is llms.txt index