MyNixOS website logo
Description

A quick way to use Mathematica like Manipulation abilities.

A pre-built ui for plotting based on plot. Quicker to use than plot-gtk, but less configurable, and less versatile.

Only provides ability to plot mathematical functions. But, also allows dynamic plotting functionality similar to Mathematica.

plot-gtk-ui

Build Status

An ambitious attempt to provide mathematica like dynamic plotting for free.

Installation

stack install plot-gtk-ui

Usage

The best way to try this is to use the calculator package.

Import Graphics.Rendering.Plot.Gtk.UI and follow the examples below.

import Graphics.UI.Gtk
import Graphics.Rendering.Plot.Gtk.UI

main = do
  initGUI
  plotStatic sin (-pi, pi)
  -- Plot sin(x) from -pi to pi
  mainGUI

sinx

Another simple example.

import Graphics.UI.Gtk
import Graphics.Rendering.Plot.Gtk.UI

main = do
  initGUI
  plotDynamic (\(x, a) -> sin(a * x)) ((-pi, pi), (0, 1))
  -- Plot sin(a * x), where 'x' ranges from -pi to
  -- pi and 'a' ranges between 0 to 1
  mainGUI

sinax

Errors

The error messages might not be completely correct, as there is not a good way to diagnose what caused the error.

Issues that cause errors:

  • Invalid ranges, e.g. X-Range = (1, -1)
  • Automatic-determination of ranges resulting in unplottable ranges, e.g. (0, 0)

If you land on the "Gray screen of no plots" or any other incorrect error message, please raise an issue here.

Implementation

The plotStatic and plotDynamic functions are implemented in a type-safe manner using fixed-vector.

It also allows one to write functions using appropriate tuples as in the above examples.

Plotting is done using the excellent plot package.

Metadata

Version

0.3.0.2

Platforms (75)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows