An open API service indexing awesome lists of open source software.

https://github.com/lofcz/mathplotter

Poor man's Desmos
https://github.com/lofcz/mathplotter

functions math plotting

Last synced: 5 months ago
JSON representation

Poor man's Desmos

Awesome Lists containing this project

README

          

# MathPlotter

Poor man's Desmos.

## Features
- Multiple plots.
- Implicit functions.
- Inequalities.
- Pan & zoom.
- Adaptive sampling.
- Automatic parameters, value & min/max sliders.
- Over 50 functions supported, courtesy of `math.js`.
- Straightforward API.

## Getting started

MathPlotter is distributed as `umd` package. Load `jsxgraphcore.js`, `math.js` and `plotter.js`:

```html


```

Setup HTML:

```html


```

Instantiate `MathPlotter`:

```js
var plotter = new MathPlotter("plotterElement");
plotter.init();
```

## Config

Pass config options as a second argument to the constructor of `MathPlotter`:

```js
var plotter = new MathPlotter("plotterElement", {
// config options
});
```

## Instance API

Methods in the following table can be called on the `plotter` instance from the examples above.

| Function | Description | Call
|--------|-------|-------|
| `plot` | Plots one or more functions | One:`plot("x")'`
Multiple:`plot("a * sin(b * x) + c;a * cos(b * x) + c;tanh(x);(x^2 + y^2 – 1)^3 = x^2 y^3")`
Param hints:`plot([{fn: "a * sin(b * x) + c", pars: [{ name: "a", value: 5 }, { name: "c", value: 1 }]}, {fn: "x + 2"}])` |
| `save` | Saves and downloads the plot in `svg` format. | `save()` |
| `saveBitmap` | Saves and downloads the plot in `jpg`/`png` format. | `await saveBitmap("jpeg")` |
| `destroy` | Removes all event handlers, destroys elements created by MathPlotter, and frees memory. | `destroy()` |

## Static API

Unlike the methods above, the following methods are called on `MathPlotter` statically.

| Function | Description | Call
|--------|-------|-------|
| `Fire` | Creates a headless instance, plots the given expressions, and destroys the instance immediately. Returns `svg` screenshot of the plot. | `Fire("ln(x)")` |
| `FireBitmap` | Creates a headless instance, plots the given expressions, and destroys the instance immediately. Returns `jpeg`/`png` screenshot of the plot. | `await FireBitmap("ln(x)", "jpeg")` |

## Build

To build `plotter.min.js` & `plotter.css`:

```js
npm i & npm run build
```

To start the dev server:

```js
npm run dev
```

To release a new version:

```js
npm run release:minor
```

## Screenshots

![image](https://github.com/user-attachments/assets/272c99d0-b149-47fd-8801-6272c239cf4b)