% notcurses_plot(3)
% nick black <nickblack@linux.com>
% v1.3.1

# NAME

notcurses_plot - high level widget for plotting

# SYNOPSIS

**#include <notcurses.h>**

```c
typedef enum {
  NCPLOT_1x1, // full block               █
  NCPLOT_2x1, // full/lower blocks       █▄
  NCPLOT_1x1x4, // shaded full blocks  █▓▒░
  NCPLOT_4x1, // four vert levels      █▆▄▂
  NCPLOT_8x1, // eight vert levels █▇▆▅▄▃▂▁
} ncgridgeom_e;

typedef struct ncplot_options {
  // channels for the maximum and minimum levels.
  // lerp across the domain between these two.
  uint64_t maxchannel;
  uint64_t minchannel;
  // number of "pixels" per row x column
  ncgridgeom_e gridtype;
  // independent variable is a contiguous range
  int rangex;
  // dependent min and max. set both equal to 0 to
  // use domain autodiscovery.
  uint64_t miny, maxy;
  bool labelaxisd;     // label dependent axis
  bool exponentialy;   // is dependent exponential?
  bool vertical_indep; // vertical independent variable
} ncplot_options;
```

**struct ncplot* ncplot_create(struct ncplane* n, const ncplot_options* opts);**

**struct ncplane* ncplot_plane(struct ncplot* n);**

**int ncplot_add_sample(struct ncplot* n, uint64_t x, uint64_t y);**
**int ncplot_set_sample(struct ncplot* n, uint64_t x, uint64_t y);**

**void ncplot_destroy(struct ncplot* n);**

# DESCRIPTION

# NOTES

Neither **exponentialy** not **vertical_indep** is yet implemented.

# RETURN VALUES

**ncplot_create** will return an error if **miny** equals **maxy**, but they
are non-zero. It will also return an error if **maxy** < **miny**. An invalid
**gridtype** will result in an error.

**ncplot_plane** returns the **ncplane** on which the plot is drawn. It cannot
fail.

# SEE ALSO

**notcurses(3)**,
**notcurses_ncplane(3)**
