tfix GSD plotting when there is no size variance and add option to specify gnuplot terminal - Granular.jl - Julia package for granular dynamics simulation
 (HTM) git clone git://src.adamsgaard.dk/Granular.jl
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit daaeb360962b25bc3312ae43f07fb6d445f94b1d
 (DIR) parent 8b1cd340b84b6f8c0481f128f91a054872906aa8
 (HTM) Author: Anders Damsgaard <andersd@riseup.net>
       Date:   Fri, 17 Nov 2017 14:08:56 -0500
       
       fix GSD plotting when there is no size variance and add option to specify gnuplot terminal
       
       Diffstat:
         M src/grain.jl                        |      34 ++++++++++++++++++-------------
         M test/grain.jl                       |      12 ++++++++----
       
       2 files changed, 28 insertions(+), 18 deletions(-)
       ---
 (DIR) diff --git a/src/grain.jl b/src/grain.jl
       t@@ -744,7 +744,8 @@ function plotGrainSizeDistribution(simulation::Simulation;
                                             nbins::Int=12,
                                             size_type::String = "contact",
                                             figsize::Tuple = (6,4),
       -                                     filetype::String = "png",
       +                                     filetype::String = "pdf",
       +                                     gnuplot_terminal::String = "pdfcairo",
                                             verbose::Bool = true,
                                             skip_fixed::Bool = true,
                                             log_y::Bool = false,
       t@@ -772,14 +773,28 @@ function plotGrainSizeDistribution(simulation::Simulation;
            writedlm(datafile, diameters)
            gnuplotscript = Base.Filesystem.tempname()
        
       +    #if maximum(diameters) ≈ minimum(diameters)
       +        #info("Overriding `nbins = $nbins` -> `nbins = 1`.")
       +        #nbins = 1
       +    #end
       +
            open(gnuplotscript, "w") do f
        
                write(f, """#!/usr/bin/env gnuplot
       -              set out "$(filename)"
       -              set xlabel "Diameter [m]"
       +              set term $gnuplot_terminal size 12 cm,8 cm
       +              set out "$(filename)"\n""")
       +        if log_y
       +            write(f, "set logscale y\n")
       +        end
       +        write(f, """set xlabel "Diameter [m]"
                      set ylabel "Count [-]"
       -              set style histogram
       -              plot "$(datafile)"
       +              binwidth = $((maximum(diameters) - minimum(diameters)+1e-7)/nbins)
       +              binstart = $(minimum(diameters))
       +              set boxwidth 1.0*binwidth
       +              set style fill solid 0.5
       +              set key off
       +              hist = 'u (binwidth*(floor((\$1-binstart)/binwidth)+0.5)+binstart):(1.0) smooth freq w boxes'
       +              plot "$(datafile)" i 0 @hist ls 1
                      """)
            end
        
       t@@ -791,15 +806,6 @@ function plotGrainSizeDistribution(simulation::Simulation;
                end
            end
        
       -
       -    xlabel = "Diameter [m]"
       -    ylabel = "Count [-]"
       -    if log_y
       -        error("Logarithmic axis scaling isn't yet supported with GR histograms")
       -        # try anyway
       -        GR.setscale(GR.OPTION_Y_LOG)
       -        GR.setscale(GR.OPTION_FLIP_X)
       -    end
            if verbose
                info(filename)
            end
 (DIR) diff --git a/test/grain.jl b/test/grain.jl
       t@@ -32,14 +32,18 @@ Granular.compareGrains(sim.grains[1], sim.grains[2])
        
        info("Testing GSD plotting ")
        Granular.plotGrainSizeDistribution(sim)
       +@test isfile("test-grain-size-distribution.pdf")
       +rm("test-grain-size-distribution.pdf")
       +Granular.plotGrainSizeDistribution(sim, filetype="png",
       +                                   gnuplot_terminal="pngcairo")
        @test isfile("test-grain-size-distribution.png")
        rm("test-grain-size-distribution.png")
        Granular.plotGrainSizeDistribution(sim, skip_fixed=false)
       -@test isfile("test-grain-size-distribution.png")
       -rm("test-grain-size-distribution.png")
       +@test isfile("test-grain-size-distribution.pdf")
       +rm("test-grain-size-distribution.pdf")
        Granular.plotGrainSizeDistribution(sim, size_type="areal")
       -@test isfile("test-grain-size-distribution.png")
       -rm("test-grain-size-distribution.png")
       +@test isfile("test-grain-size-distribution.pdf")
       +rm("test-grain-size-distribution.pdf")
        @test_throws ErrorException Granular.plotGrainSizeDistribution(sim, size_type="asdf")
        
        info("Testing external body force routines")