Skip to content

Latest commit

 

History

History
67 lines (47 loc) · 2.61 KB

README.md

File metadata and controls

67 lines (47 loc) · 2.61 KB

plotly.lua

A simple interface for plotting with Plotly in Lua

Installation

Installation with luarocks:

luarocks install plotly

The interface in written in pure Lua and requires internet for rending the plots

Usages

Some examples can be found here: https://github.com/kenloen/plotly.lua/tree/main/example

The module comes with two approches for creating figures/plots.

plotly.plot

The fastest interface is trying to mimic the plotting interface in Matlab and Matplotlib, using the plotly.plot{x, y, ...} or fig.plot{x, y, ...} api.

plotly = require("plotly")

plotly.plot{{ 1, 2, 3, 4 }, { 10, 15, 13, 17 }, 
            xlabel="x-axis", ylabel="y-axis",
            title="Using plotly.plot"}:show()

Which will open the plot in the browser.
Examples are here:

plotly.figure

The other one is a simple wrapper around the plain plotly.js where the data for a plot is provided though JSON data such as data (containing data about traces), layout (containing data about figure layout, e.g. title, axis-title, size), and config (containing data about figure configurations e.g. responsive sizing, interactive title editing).

plotly = require("plotly")

-- Figure with all traces, layout and config
-- From= https://plotly.com/javascript/line-charts/
fig1 = plotly.figure()

fig1:add_trace { x = { 1, 2, 3, 4 }, y = { 10, 15, 13, 17 }, mode = 'markers' }

fig1:add_trace { x = { 2, 3, 4, 5 }, y = { 16, 5, 11, 9 }, mode = 'lines' }

fig1:add_trace { x = { 1, 2, 3, 4 }, y = { 12, 9, 15, 12 }, mode = 'lines+markers' }

fig1:update_layout { title = 'Line and Scatter Plot with scroll-zoom and editable titles' }

fig1:update_config { scrollZoom = true, editable = true }

fig1:show()

Examples are here:

Saving to file

The examples above are using :show() to show the plot in the browser. If instead a file should be saved the :tofile(filename) method should be used. Using the example with fig1 from above:

fig1:tofile("awesome_plot.html")

or if both a file should be saved and opening in the browser:

fig1:tofile("awesome_plot.html"):show()