-- Abstract : -- -- see spec -- -- References: -- -- gnu plot manual: /usr/share/doc/gnuplot/manual/gnuplot.pdf -- -- Copyright (C) 2017, 2018 Stephen Leake All Rights Reserved. -- -- This program is free software; you can redistribute it and/or -- modify it under terms of the GNU General Public License as -- published by the Free Software Foundation; either version 3, or (at -- your option) any later version. This program is distributed in the -- hope that it will be useful, but WITHOUT ANY WARRANTY; without even -- the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR -- PURPOSE. See the GNU General Public License for more details. You -- should have received a copy of the GNU General Public License -- distributed with this program; see file COPYING. If not, write to -- the Free Software Foundation, 51 Franklin Street, Suite 500, Boston, -- MA 02110-1335, USA. pragma License (GPL); with Ada.Directories; with Ada.Float_Text_IO; with Ada.Text_IO; package body SAL.Gen_Histogram.Gen_Gnuplot is procedure Create_File (File : in out Ada.Text_IO.File_Type; Name : in String) is use Ada.Directories; use Ada.Text_IO; begin if Exists (Name) then Delete_File (Name); end if; Create (File, Out_File, Name); end Create_File; procedure Put_Plot (Histogram : in Object; Title : in String; X_Label : in String) is use Ada.Text_IO; use Ada.Float_Text_IO; Data_File_Name : constant String := Title & "_histogram.dat"; Plot_File_Name : constant String := Title & "_histogram.gnuplot"; Data_File : File_Type; -- Histogram data: -- -- 1 bin 0 .. 12 -- 2 bin count 0 .. Max_Bin_Count Plot_File : File_Type; begin Create_File (Data_File, Data_File_Name); Create_File (Plot_File, Plot_File_Name); for I in Histogram.Bins'Range loop Put (Data_File, Float (I) * Units_Per_Bin, Aft => 2, Exp => 0); Put_Line (Data_File, Integer'Image (Histogram.Bins (I))); end loop; Put_Line (Plot_File, "set term png size 950,480"); Put_Line (Plot_File, "set style data histograms"); Put_Line (Plot_File, "set style histogram cluster"); Put_Line (Plot_File, "set ylabel ""count"""); Put_Line (Plot_File, "set xlabel """ & X_Label & """"); Put_Line (Plot_File, "set title """ & Title & " (total" & Integer'Image (Histogram.Total_Count) & ")"""); Put_Line (Plot_File, "set key off"); -- can't specify column for xdata with histogram style. Put_Line (Plot_File, "plot '" & Data_File_Name & "' using 2:xticlabels(1) title '" & X_Label & "'"); Close (Data_File); Close (Plot_File); end Put_Plot; end SAL.Gen_Histogram.Gen_Gnuplot;