From ecb83b59fd9e03c6446cbb7bc2bbfb6c466f389f Mon Sep 17 00:00:00 2001 From: David Little Date: Wed, 10 Jul 2019 11:56:30 -0400 Subject: [PATCH] fixed defect in some backends' handling of axis transformations --- src/PlotAxes.jl | 2 ++ src/gadfly.jl | 12 ++++++------ src/ggplot2.jl | 18 +++++++++--------- test/runtests.jl | 9 +++++++++ 4 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/PlotAxes.jl b/src/PlotAxes.jl index 5377b94..6eef2cc 100644 --- a/src/PlotAxes.jl +++ b/src/PlotAxes.jl @@ -239,6 +239,8 @@ end # using Gadfly # include("gadfly.jl") +const AxisId = Union{Symbol,Pair} + function __init__() @require RCall="6f49c342-dc21-5d91-9882-a32aef131414" begin using .RCall diff --git a/src/gadfly.jl b/src/gadfly.jl index 837aeea..9230d9b 100644 --- a/src/gadfly.jl +++ b/src/gadfly.jl @@ -1,13 +1,13 @@ export gadplot_axes split_gadargs(args...) = (),args -split_gadargs(ax::Symbol,args...) = (ax,),args -split_gadargs(ax1::Symbol,ax2::Symbol,args...) = (ax1,ax2),args -split_gadargs(ax1::Symbol,ax2::Symbol,ax3::Symbol,args...) = (ax1,ax2,ax3),args -split_gadargs(ax1::Symbol,ax2::Symbol,ax3::Symbol,ax4::Symbol,args...) = +split_gadargs(ax::AxisId,args...) = (ax,),args +split_gadargs(ax1::AxisId,ax2::AxisId,args...) = (ax1,ax2),args +split_gadargs(ax1::AxisId,ax2::AxisId,ax3::AxisId,args...) = (ax1,ax2,ax3),args +split_gadargs(ax1::AxisId,ax2::AxisId,ax3::AxisId,ax4::AxisId,args...) = (ax1,ax2,ax3,ax4),args -function split_gadargs(ax1::Symbol,ax2::Symbol,ax3::Symbol,ax4::Symbol, - ax5::Symbol,args...) +function split_gadargs(ax1::AxisId,ax2::AxisId,ax3::AxisId,ax4::AxisId, + ax5::AxisId,args...) error("Plotting data using 5 or more axes is not supported by Gadfly backend.") end diff --git a/src/ggplot2.jl b/src/ggplot2.jl index 5a6ee5f..41ec6b7 100644 --- a/src/ggplot2.jl +++ b/src/ggplot2.jl @@ -1,17 +1,17 @@ export ggplot_axes split_ggargs(args...) = (),args -split_ggargs(ax::Symbol,args...) = (ax,),args -split_ggargs(ax1::Symbol,ax2::Symbol,args...) = (ax1,ax2),args -split_ggargs(ax1::Symbol,ax2::Symbol,ax3::Symbol,args...) = (ax1,ax2,ax3),args -split_ggargs(ax1::Symbol,ax2::Symbol,ax3::Symbol,ax4::Symbol,args...) = +split_ggargs(ax::AxisId,args...) = (ax,),args +split_ggargs(ax1::AxisId,ax2::AxisId,args...) = (ax1,ax2),args +split_ggargs(ax1::AxisId,ax2::AxisId,ax3::AxisId,args...) = (ax1,ax2,ax3),args +split_ggargs(ax1::AxisId,ax2::AxisId,ax3::AxisId,ax4::AxisId,args...) = (ax1,ax2,ax3,ax4),args -split_ggargs(ax1::Symbol,ax2::Symbol,ax3::Symbol,ax4::Symbol,ax5::Symbol,args...) = +split_ggargs(ax1::AxisId,ax2::AxisId,ax3::AxisId,ax4::AxisId,ax5::AxisId,args...) = (ax1,ax2,ax3,ax4,ax5),args -split_ggargs(ax1::Symbol,ax2::Symbol,ax3::Symbol,ax4::Symbol,ax5::Symbol, - ax6::Symbol,args...) = (ax1,ax2,ax3,ax4,ax5,ax6),args -function split_ggargs(ax1::Symbol,ax2::Symbol,ax3::Symbol,ax4::Symbol, - ax5::Symbol,ax6::Symbol,ax7::Symbol,args...) +split_ggargs(ax1::AxisId,ax2::AxisId,ax3::AxisId,ax4::AxisId,ax5::AxisId, + ax6::AxisId,args...) = (ax1,ax2,ax3,ax4,ax5,ax6),args +function split_ggargs(ax1::AxisId,ax2::AxisId,ax3::AxisId,ax4::AxisId, + ax5::AxisId,ax6::AxisId,ax7::AxisId,args...) error("Plotting data using 7 or more axes is not supported by ggplot backend.") end diff --git a/test/runtests.jl b/test/runtests.jl index fababff..8a58311 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -113,6 +113,15 @@ end result = plotaxes(d) @test result != false end + if ndims(d) == 3 + result = plotaxes(d,:a,:b => log,:c) + elseif ndims(d) == 2 + result = plotaxes(d,:a,:b => log) + elseif ndims(d) == 1 + result = plotaxes(d,:a => log) + end + + @test result != false end end