From 11e9eb3aa354a5ea07e608cb9d5c35bdbe19efdb Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sun, 23 Apr 2017 20:30:48 +0200 Subject: [PATCH 1/5] allow Int as input type for the ticks attribute to set the desired number of ticks --- src/axes.jl | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/axes.jl b/src/axes.jl index 7af2d7c5..dae525c3 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -188,6 +188,23 @@ function optimal_ticks_and_labels(axis::Axis, ticks = nothing) k_min = 5, # minimum number of ticks k_max = 8, # maximum number of ticks )[1] + elseif typeof(ticks) <: Int + # only return ticks within the axis limits + filter( + ti -> sf(amin) <= ti <= sf(amax), + optimize_ticks( + sf(amin), + sf(amax); + # TODO: find a better configuration to return the chosen number + # of ticks + k_min = ticks + 1, # minimum number of ticks + k_max = ticks + 2, # maximum number of ticks + k_ideal = ticks + 2, + # `strict_span = false` rewards cases where the span of the + # chosen ticks is not too much bigger than amin - amax: + strict_span = false, + )[1] + ) else map(sf, filter(t -> amin <= t <= amax, ticks)) end @@ -226,7 +243,7 @@ function get_ticks(axis::Axis) elseif ticks == :auto # compute optimal ticks and labels optimal_ticks_and_labels(axis) - elseif typeof(ticks) <: AVec + elseif typeof(ticks) <: Union{AVec, Int} # override ticks, but get the labels optimal_ticks_and_labels(axis, ticks) elseif typeof(ticks) <: NTuple{2} From a602309a02c72359227c1d1d68635cf5b1d37762 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sun, 30 Apr 2017 19:02:42 +0200 Subject: [PATCH 2/5] wip let axis limits expand --- src/axes.jl | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/src/axes.jl b/src/axes.jl index dae525c3..9dfa18a9 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -181,32 +181,32 @@ function optimal_ticks_and_labels(axis::Axis, ticks = nothing) end # get a list of well-laid-out ticks - scaled_ticks = if ticks == nothing - optimize_ticks( + if ticks == nothing + scaled_ticks = optimize_ticks( sf(amin), sf(amax); k_min = 5, # minimum number of ticks k_max = 8, # maximum number of ticks - )[1] + )[1], sf(amin), sf(amax) elseif typeof(ticks) <: Int - # only return ticks within the axis limits - filter( - ti -> sf(amin) <= ti <= sf(amax), - optimize_ticks( - sf(amin), - sf(amax); - # TODO: find a better configuration to return the chosen number - # of ticks - k_min = ticks + 1, # minimum number of ticks - k_max = ticks + 2, # maximum number of ticks - k_ideal = ticks + 2, - # `strict_span = false` rewards cases where the span of the - # chosen ticks is not too much bigger than amin - amax: - strict_span = false, - )[1] + scaled_ticks, viewmin, viewmax = optimize_ticks( + sf(amin), + sf(amax); + # TODO: find a better configuration to return the chosen number + # of ticks + k_min = ticks, # minimum number of ticks + k_max = ticks, # maximum number of ticks + k_ideal = ticks, + # k_min = ticks + 1, # minimum number of ticks + # k_max = ticks + 2, # maximum number of ticks + # k_ideal = ticks + 2, + # `strict_span = false` rewards cases where the span of the + # chosen ticks is not too much bigger than amin - amax: + strict_span = false, ) + axis[:lims] = map(invscalefunc(scale), (viewmin, viewmax)) else - map(sf, filter(t -> amin <= t <= amax, ticks)) + scaled_ticks = map(sf, (filter(t -> amin <= t <= amax, ticks), amin, amax)) end unscaled_ticks = map(invscalefunc(scale), scaled_ticks) @@ -503,10 +503,10 @@ end # compute the line segments which should be drawn for this axis function axis_drawing_info(sp::Subplot) xaxis, yaxis = sp[:xaxis], sp[:yaxis] - xmin, xmax = axis_limits(xaxis) - ymin, ymax = axis_limits(yaxis) xticks = get_ticks(xaxis) yticks = get_ticks(yaxis) + xmin, xmax = axis_limits(xaxis) + ymin, ymax = axis_limits(yaxis) spine_segs = Segments(2) grid_segs = Segments(2) From 93d16a27c1cb67e7305360429cea15b80eb3f4dc Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sun, 30 Apr 2017 19:27:01 +0200 Subject: [PATCH 3/5] undo unnecessary changes --- src/axes.jl | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/axes.jl b/src/axes.jl index 9dfa18a9..276d7374 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -187,26 +187,21 @@ function optimal_ticks_and_labels(axis::Axis, ticks = nothing) sf(amax); k_min = 5, # minimum number of ticks k_max = 8, # maximum number of ticks - )[1], sf(amin), sf(amax) + )[1] elseif typeof(ticks) <: Int scaled_ticks, viewmin, viewmax = optimize_ticks( sf(amin), sf(amax); - # TODO: find a better configuration to return the chosen number - # of ticks k_min = ticks, # minimum number of ticks k_max = ticks, # maximum number of ticks k_ideal = ticks, - # k_min = ticks + 1, # minimum number of ticks - # k_max = ticks + 2, # maximum number of ticks - # k_ideal = ticks + 2, # `strict_span = false` rewards cases where the span of the # chosen ticks is not too much bigger than amin - amax: strict_span = false, ) axis[:lims] = map(invscalefunc(scale), (viewmin, viewmax)) else - scaled_ticks = map(sf, (filter(t -> amin <= t <= amax, ticks), amin, amax)) + scaled_ticks = map(sf, (filter(t -> amin <= t <= amax, ticks))) end unscaled_ticks = map(invscalefunc(scale), scaled_ticks) @@ -503,10 +498,10 @@ end # compute the line segments which should be drawn for this axis function axis_drawing_info(sp::Subplot) xaxis, yaxis = sp[:xaxis], sp[:yaxis] - xticks = get_ticks(xaxis) - yticks = get_ticks(yaxis) xmin, xmax = axis_limits(xaxis) ymin, ymax = axis_limits(yaxis) + xticks = get_ticks(xaxis) + yticks = get_ticks(yaxis) spine_segs = Segments(2) grid_segs = Segments(2) From bad2ef63c6c4794ee9be1525942667fcb6e2618d Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sun, 21 May 2017 23:44:12 +0200 Subject: [PATCH 4/5] fix passing ticks tuple on 0.6 --- src/axes.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/axes.jl b/src/axes.jl index 276d7374..8aaa1908 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -241,7 +241,7 @@ function get_ticks(axis::Axis) elseif typeof(ticks) <: Union{AVec, Int} # override ticks, but get the labels optimal_ticks_and_labels(axis, ticks) - elseif typeof(ticks) <: NTuple{2} + elseif typeof(ticks) <: NTuple{2, Any} # assuming we're passed (ticks, labels) ticks else From dd526e00ab74ed936ee15df24a1e26e8781d100a Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Sun, 21 May 2017 23:47:26 +0200 Subject: [PATCH 5/5] undo: fix passing ticks tuple on 0.6 --- src/axes.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/axes.jl b/src/axes.jl index 8aaa1908..276d7374 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -241,7 +241,7 @@ function get_ticks(axis::Axis) elseif typeof(ticks) <: Union{AVec, Int} # override ticks, but get the labels optimal_ticks_and_labels(axis, ticks) - elseif typeof(ticks) <: NTuple{2, Any} + elseif typeof(ticks) <: NTuple{2} # assuming we're passed (ticks, labels) ticks else