Added logic to choose *round* DateTime tick positions

This commit is contained in:
Daniel Schwabeneder 2017-03-06 23:52:59 +01:00
parent 124f1fe701
commit f2235abf08
2 changed files with 12 additions and 2 deletions

View File

@ -156,6 +156,13 @@ function optimal_ticks_and_labels(axis::Axis, ticks = nothing)
scale = axis[:scale]
sf = scalefunc(scale)
# If the axis input was a Date or DateTime use a special logic to find
# "round" Date(Time)s as ticks
# TODO: maybe: non-trivial scale (:ln, :log2, :log10) for date/datetime
if axis[:formatter] in (dateformatter, datetimeformatter) && scale == :identity
return optimize_datetime_ticks(amin, amax; k_min = 2, k_max = 4)
end
# get a list of well-laid-out ticks
scaled_ticks = if ticks == nothing
optimize_ticks(

View File

@ -792,8 +792,11 @@ abline!(args...; kw...) = abline!(current(), args...; kw...)
# -------------------------------------------------
# Dates
@recipe f(::Type{Date}, dt::Date) = (dt -> convert(Int,dt), dt -> string(convert(Date,dt)))
@recipe f(::Type{DateTime}, dt::DateTime) = (dt -> convert(Int,dt), dt -> string(convert(DateTime,dt)))
dateformatter(dt) = string(convert(Date, convert(DateTime, dt)))
datetimeformatter(dt) = string(convert(DateTime, dt))
@recipe f(::Type{Date}, dt::Date) = (dt -> convert(Int, convert(DateTime, dt)), dateformatter)
@recipe f(::Type{DateTime}, dt::DateTime) = (dt -> convert(Int,dt), datetimeformatter)
# -------------------------------------------------
# Complex Numbers