#lang racket ;;; Science Collection ;;; discrete-histogram-graphics.rkt ;;; Copyright (c) 2004-2011 M. Douglas Williams ;;; ;;; This file is part of the Science Collection. ;;; ;;; The Science Collection is free software: you can redistribute it and/or ;;; modify it under the terms of the GNU Lesser General Public License as ;;; published by the Free Software Foundation, either version 3 of the License ;;; or (at your option) any later version. ;;; ;;; The Science Collection is distributed in the hope that it will be useful, ;;; but WITHOUT WARRANTY; without even the implied warranty of MERCHANTABILITY ;;; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public ;;; License for more details. ;;; ;;; You should have received a copy of the GNU Lesser General Public License ;;; along with the Science Collection. If not, see ;;; <http://www.gnu.org/licenses/>. ;;; ;;; ----------------------------------------------------------------------------- ;;; ;;; This module implements the graphics for discrete histograms. ;;; ;;; Version Date Description ;;; 1.0.0 09/30/04 Marked as ready for Release 1.0. (MDW) ;;; 3.0.0 06/09/08 Changes required for V4.0 (MDW) ;;; 3.0.1 07/01/08 Changed x axis label. (MDW) ;;; 4.0.0 07/03/10 Changed the header and restructured the code. (MDW) (require "discrete-histogram.rkt" "plot-discrete.ss" plot) ;;; discrete-histogram-plot: discrete-histogram x string -> void ;;; discrete-histogram -> void (define discrete-histogram-plot (case-lambda ((h title) (let ((n1 (discrete-histogram-n1 h)) (n2 (discrete-histogram-n2 h)) (bins (discrete-histogram-bins h))) (plot (discrete `(,n1 ,n2 ,bins)) #:x-min (- n1 0.5) #:x-max (+ n2 0.5) #:x-label "X" #:y-min 0 #:y-max (discrete-histogram-max h) #:y-label "Count" #:title title))) ((h) (discrete-histogram-plot h "Histogram")))) ;;; discrete-histogram-plot-scaled: discrete-histogram x string -> void ;;; discrete-histogram -> void (define discrete-histogram-plot-scaled (case-lambda ((h title) (let ((n1 (discrete-histogram-n1 h)) (n2 (discrete-histogram-n2 h)) (bins (discrete-histogram-bins h))) (plot (discrete `(,n1 ,n2 ,bins)) #:x-min (- n1 0.5) #:x-max (+ n2 0.5) #:x-label "X" #:y-min 0 #:y-max (discrete-histogram-sum h) #:y-label "Count" #:title title))) ((h) (discrete-histogram-plot h "Histogram")))) ;;; Module Contracts (provide/contract (discrete-histogram-plot (case-> (-> discrete-histogram? string? any) (-> discrete-histogram? any))) (discrete-histogram-plot-scaled (case-> (-> discrete-histogram? string? any) (-> discrete-histogram? any))))