hugin: Functional Plotting and Visualization Library for OCaml
Provides composable artists, axes, figures, and high-level plotting APIs for creating scientific and statistical graphics using Nx.
Artist: Visual element constructors and style specifications.
Module for axes-level operations (the plotting area).
Module for figure-level operations (the top-level canvas).
Module containing functions to add standard plot types to an Axes.
Top-Level API
These functions create a Figure and Axes implicitly, plot the data, apply common optional decorations, and return the Figure.
plot ?title ?xlabel ?ylabel ?color ?linewidth ?linestyle ?marker ?label x y
Create a new figure and plot y versus x.
Parameters
?title: title displayed atop the figure.?xlabel: label for the x-axis.?ylabel: label for the y-axis.?color: line and marker color.?linewidth: thickness of the line.?linestyle: dash pattern of the line.?marker: marker style at data points.?label: legend entry for the plotted data.x: 1D float32 nx of x coordinates.y: 1D float32 nx of y coordinates.
Returns
- a
figure containing the created plot.
Examples
let fig = plot x_arr y_arr in
savefig fig "plot.png"
plot_y ?title ?xlabel ?ylabel ?color ?linewidth ?linestyle ?marker ?label y
Create a new figure and plot the data y against indices 0..N-1.
Parameters
?title: figure title.?xlabel: x-axis label.?ylabel: y-axis label.?color: line/marker color.?linewidth: thickness of the line.?linestyle: dash pattern of the line.?marker: marker style at data points.?label: legend entry for the series.y: 1D float32 nx of y values.
Returns
- a
figure containing the plotted series.
Examples
let fig = plot_y y_arr in
savefig fig "plot_y.png"
plot3d ?title ?xlabel ?ylabel ?zlabel ?color ?linewidth ?linestyle ?marker ?label x y z
Create a new figure, add 3D axes, and plot a 3D line through points.
Parameters
?title: figure title.?xlabel, ?ylabel, ?zlabel: axis labels.?color: line/marker color.?linewidth: line width.?linestyle: dash pattern.?marker: marker style.?label: legend entry.x, y, z: 1D float32 nxs of coordinates.
Returns
- a
figure with the 3D line plotted.
Examples
let fig = plot3d x_arr y_arr z_arr in
savefig fig "plot3d.png"
scatter ?title ?xlabel ?ylabel ?s ?c ?marker ?label x y
Create a new figure and scatter plot points (x,y).
Parameters
?title: figure title.?xlabel: x-axis label.?ylabel: y-axis label.?s: marker size in points.?c: marker color.?marker: marker style.?label: legend entry.x, y: coordinate arrays.
Returns
- a
figure containing the scatter plot.
Raises
Invalid_argument if lengths of x and y differ.
Examples
let fig = scatter x_arr y_arr in
savefig fig "scatter.png"
Sourceval hist :
?bins:[ `Num of int | `Edges of float array ] ->
?range:(float * float) ->
?density:bool ->
?title:string ->
?xlabel:string ->
?ylabel:string ->
?color:Artist.color ->
?label:string ->
Nx.float32_t ->
figure hist ?bins ?range ?density ?title ?xlabel ?ylabel ?color ?label x
Create a new figure and plot a histogram of the data in x.
Parameters
?bins: number of bins or explicit edges.?range: (min, max) interval for data inclusion.?density: if true, plot probability density instead of counts.?title: figure title.?xlabel: x-axis label.?ylabel: y-axis label.?color: bar fill color.?label: legend entry.x: 1D float32 nx of data values.
Returns
- a
figure containing the histogram plot.
Examples
let fig = hist ~bins:(`Num 50) ~range:(0., 1.) ~density:true data in
savefig fig "hist.png"
bar ?width ?bottom ?title ?xlabel ?ylabel ?color ?label ~height x
Create a new figure and render a bar chart.
Parameters
?width: width of each bar (default 0.8).?bottom: baseline for bars (default 0.0).?title: figure title.?xlabel: label for x-axis.?ylabel: label for y-axis.?color: bar fill color.?label: legend entry.~height: 1D float32 nx of bar heights.x: 1D float32 nx of bar positions.
Returns
- a
figure containing the bar chart.
Examples
let fig = bar ~height:h_arr x_arr in
savefig fig "bar.png"
Sourceval imshow :
?cmap:Artist.cmap ->
?aspect:string ->
?extent:(float * float * float * float) ->
?title:string ->
?xlabel:string ->
?ylabel:string ->
('a, 'b) Nx.t ->
figure imshow ?cmap ?aspect ?extent ?title ?xlabel ?ylabel data
Create a new figure and display an image from a data array.
Parameters
?cmap: colormap for single-channel (2D) data.?aspect: aspect ratio mode ("auto" or "equal").?extent: bounding box (xmin, xmax, ymin, ymax).?title: figure title.?xlabel, ?ylabel: axis labels.data: nx of shape |H;W|, |H;W;3|, or |H;W;4|.
Returns
- a
figure with the image displayed.
Raises
Invalid_argument if data rank or shape is unsupported.
Examples
let fig = imshow img_arr in
savefig fig "image.png"
step ?title ?xlabel ?ylabel ?color ?linewidth ?linestyle ?where ?label x y
Create a new figure and draw a step plot for data y vs x.
Parameters
?title: figure title.?xlabel, ?ylabel: axis labels.?color: line color.?linewidth: line width.?linestyle: dash pattern.?where: step alignment relative to x.?label: legend entry.x, y: coordinate arrays.
Returns
- a
figure containing the step plot.
Raises
Invalid_argument on length mismatch.
Examples
let fig = step x_arr y_arr ~where:Mid in
savefig fig "step.png"
fill_between ?title ?xlabel ?ylabel ?color ?where ?interpolate ?label x y1 y2
Create a new figure and shade the area between two curves.
Parameters
?title: figure title.?xlabel, ?ylabel: axis labels.?color: fill color.?where: mask array selecting regions to fill.?interpolate: interpolate across missing regions.?label: legend entry.x: x-coordinate array.y1, y2: arrays defining lower and upper curves.
Returns
- a
figure containing the shaded region.
Raises
Invalid_argument on length mismatch.
Examples
let fig = fill_between x_arr y_lo y_hi in
savefig fig "area.png"
errorbar ?title ?xlabel ?ylabel ?yerr ?xerr ?ecolor ?elinewidth ?capsize ?fmt ?label x y
Create a new figure and plot data with error bars.
Parameters
?title: figure title.?xlabel, ?ylabel: axis labels.?yerr: array of y-error values.?xerr: array of x-error values.?ecolor: error bar color.?elinewidth: error bar line width.?capsize: cap size in points.?fmt: plot style for central points/line.?label: legend entry.x, y: data coordinate arrays.
Returns
- a
figure containing the error bar plot.
Raises
Invalid_argument if array lengths mismatch.
Examples
let fig = errorbar x_arr y_arr ~yerr:y_err in
savefig fig "errorbar.png"
Sourceval matshow :
?cmap:Artist.cmap ->
?aspect:string ->
?extent:(float * float * float * float) ->
?origin:[ `upper | `lower ] ->
?title:string ->
('a, 'b) Nx.t ->
figure matshow ?cmap ?aspect ?extent ?origin ?title data
Create a new figure and display a 2D matrix with cell coloring.
Parameters
?cmap: colormap for mapping values.?aspect: aspect ratio mode.?extent: (xmin,xmax,ymin,ymax) plot bounds.?origin: `upper or `lower y-axis origin placement.?title: figure title.data: 2D nx of numeric values.
Returns
- a
figure containing the matrix image.
Examples
let fig = matshow matrix in
savefig fig "matrix.png"
figure ?width ?height ()
Create a new figure canvas with optional size.
Parameters
?width: width in pixels (default 800).?height: height in pixels (default 600).(): unit argument.
Returns
Examples
let fig = figure ~width:1024 ~height:768 () in
...
subplot ?nrows ?ncols ?index ?projection fig
Add a subplot in a grid layout to the figure.
Parameters
?nrows: number of rows (default 1).?ncols: number of columns (default 1).?index: subplot index (1-based, default 1).?projection: TwoD or ThreeD axes type.fig: parent figure.
Returns
Examples
let ax = subplot ~nrows:2 ~ncols:2 ~index:3 fig in
...
add_axes ~left ~bottom ~width ~height ?projection fig
Add custom-positioned axes to the figure.
Parameters
~left: left margin (fraction of figure width).~bottom: bottom margin (fraction of figure height).~width, ~height: size of axes (fractions).?projection: TwoD or ThreeD.fig: parent figure.
Returns
Examples
let ax = add_axes ~left:0.1 ~bottom:0.1 ~width:0.8 ~height:0.8 fig in
...
Display and Saving
show figure
Render and display the figure in an interactive window.
Parameters
figure: the figure to display.
Notes
- Blocks execution until the window is closed.
Examples
let fig = plot x_arr y_arr in
show fig
Sourceval savefig : ?dpi:int -> ?format:string -> string -> figure -> unit savefig ?dpi ?format filename fig
Save the figure to a file.
Parameters
?dpi: resolution in dots per inch (default 100).?format: output format (e.g., "png", "pdf"); inferred from extension by default.filename: destination file path.fig: figure to save.
Notes
- Only PNG format is supported in the current implementation.
Examples
let fig = plot x_arr y_arr in
savefig ~dpi:300 "highres.png" fig
render ?format fig
Render to an in-memory buffer and return the image data as a string.
Parameters
?format: output format (default "png").fig: figure to save.
Returns
- A string containing the image data in the specified format.
Notes
- Only PNG format is supported in the current implementation.
Examples
let fig = plot x_arr y_arr in
let png_data = save_to_buffer fig in
(* Use png_data, e.g., for network transmission or further processing *)