sig
  type dsmat = Owl_dense_matrix_d.mat
  type handle
  type color = RED | GREEN | BLUE
  type legend_position =
      North
    | South
    | West
    | East
    | NorthWest
    | NorthEast
    | SouthWest
    | SouthEast
  val create : ?m:int -> ?n:int -> string -> Owl_plot.handle
  val subplot : Owl_plot.handle -> int -> int -> unit
  val output : Owl_plot.handle -> unit
  val set_output : Owl_plot.handle -> string -> unit
  val set_title : Owl_plot.handle -> string -> unit
  val set_xlabel : Owl_plot.handle -> string -> unit
  val set_ylabel : Owl_plot.handle -> string -> unit
  val set_zlabel : Owl_plot.handle -> string -> unit
  val set_xrange : Owl_plot.handle -> float -> float -> unit
  val set_yrange : Owl_plot.handle -> float -> float -> unit
  val set_zrange : Owl_plot.handle -> float -> float -> unit
  val set_xticklabels : Owl_plot.handle -> (float * string) list -> unit
  val set_yticklabels : Owl_plot.handle -> (float * string) list -> unit
  val set_zticklabels : Owl_plot.handle -> (float * string) list -> unit
  val set_foreground_color : Owl_plot.handle -> int -> int -> int -> unit
  val set_background_color : Owl_plot.handle -> int -> int -> int -> unit
  val set_altitude : Owl_plot.handle -> float -> unit
  val set_azimuth : Owl_plot.handle -> float -> unit
  val set_font_size : Owl_plot.handle -> float -> unit
  val set_pen_size : Owl_plot.handle -> float -> unit
  val set_page_size : Owl_plot.handle -> int -> int -> unit
  val legend_on :
    Owl_plot.handle ->
    ?position:Owl_plot.legend_position -> string array -> unit
  val legend_off : Owl_plot.handle -> unit
  val plot :
    ?h:Owl_plot.handle ->
    ?color:int * int * int ->
    ?marker:string ->
    ?marker_size:float ->
    ?line_style:int ->
    ?line_width:float -> Owl_plot.dsmat -> Owl_plot.dsmat -> unit
  val plot_fun :
    ?h:Owl_plot.handle ->
    ?color:int * int * int ->
    ?marker:string ->
    ?marker_size:float ->
    ?line_style:int ->
    ?line_width:float -> (float -> float) -> float -> float -> unit
  val scatter :
    ?h:Owl_plot.handle ->
    ?color:int * int * int ->
    ?marker:string ->
    ?marker_size:float -> Owl_plot.dsmat -> Owl_plot.dsmat -> unit
  val histogram :
    ?h:Owl_plot.handle ->
    ?color:int * int * int -> ?bin:int -> Owl_plot.dsmat -> unit
  val ecdf :
    ?h:Owl_plot.handle ->
    ?color:int * int * int ->
    ?line_style:int -> ?line_width:float -> Owl_plot.dsmat -> unit
  val stairs :
    ?h:Owl_plot.handle ->
    ?color:int * int * int ->
    ?line_style:int ->
    ?line_width:float -> Owl_plot.dsmat -> Owl_plot.dsmat -> unit
  val stem :
    ?h:Owl_plot.handle ->
    ?color:int * int * int ->
    ?marker:string ->
    ?marker_size:float ->
    ?line_style:int ->
    ?line_width:float -> Owl_plot.dsmat -> Owl_plot.dsmat -> unit
  val autocorr :
    ?h:Owl_plot.handle ->
    ?marker:string -> ?marker_size:float -> Owl_plot.dsmat -> unit
  val text :
    ?h:Owl_plot.handle ->
    ?color:int * int * int ->
    float -> float -> ?dx:float -> ?dy:float -> string -> unit
  val draw_line :
    ?h:Owl_plot.handle ->
    ?color:int * int * int ->
    ?line_style:int ->
    ?line_width:float -> float -> float -> float -> float -> unit
  val draw_rect :
    ?h:Owl_plot.handle ->
    ?color:int * int * int ->
    ?line_style:int ->
    ?fill_pattern:int -> float -> float -> float -> float -> unit
  val draw_circle :
    ?h:Owl_plot.handle ->
    ?color:int * int * int ->
    ?line_style:int ->
    ?line_width:float -> ?fill_pattern:int -> float -> float -> float -> unit
  val bar :
    ?h:Owl_plot.handle ->
    ?color:int * int * int ->
    ?line_style:int -> ?fill_pattern:int -> Owl_plot.dsmat -> unit
  val area :
    ?h:Owl_plot.handle ->
    ?color:int * int * int ->
    ?line_style:int ->
    ?fill_pattern:int -> Owl_plot.dsmat -> Owl_plot.dsmat -> unit
  val error_bar :
    ?h:Owl_plot.handle ->
    ?color:int * int * int ->
    ?line_style:int ->
    ?line_width:float ->
    Owl_plot.dsmat -> Owl_plot.dsmat -> Owl_plot.dsmat -> unit
  val boxplot :
    ?h:Owl_plot.handle -> ?color:int * int * int -> Owl_plot.dsmat -> unit
  val pie :
    ?h:Owl_plot.handle ->
    ?color:int * int * int -> ?fill:bool -> Owl_plot.dsmat -> unit
  val plot3d :
    ?h:Owl_plot.handle ->
    ?contour:bool ->
    ?altitude:float ->
    ?azimuth:float ->
    Owl_plot.dsmat -> Owl_plot.dsmat -> Owl_plot.dsmat -> unit
  val surf :
    ?h:Owl_plot.handle ->
    ?contour:bool ->
    ?altitude:float ->
    ?azimuth:float ->
    Owl_plot.dsmat -> Owl_plot.dsmat -> Owl_plot.dsmat -> unit
  val mesh :
    ?h:Owl_plot.handle ->
    ?contour:bool ->
    ?altitude:float ->
    ?azimuth:float ->
    Owl_plot.dsmat -> Owl_plot.dsmat -> Owl_plot.dsmat -> unit
  val contour :
    ?h:Owl_plot.handle ->
    Owl_plot.dsmat -> Owl_plot.dsmat -> Owl_plot.dsmat -> unit
  val heatmap :
    ?h:Owl_plot.handle ->
    Owl_plot.dsmat -> Owl_plot.dsmat -> Owl_plot.dsmat -> unit
  val normplot : ?h:Owl_plot.handle -> Owl_plot.dsmat -> unit
end