diff --git a/src/axes.jl b/src/axes.jl index 0ef3a3a7..37ea8eaa 100644 --- a/src/axes.jl +++ b/src/axes.jl @@ -94,6 +94,12 @@ function attr!(axis::Axis, args...; kw...) for vi in v discrete_value!(axis, vi) end + #could perhaps use TimeType here, as Date and DateTime are both subtypes of TimeType + # or could perhaps check if dateformatter or datetimeformatter is in use + elseif k == :lims && isa(v, Tuple{Date,Date}) + plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) + elseif k == :lims && isa(v, Tuple{DateTime,DateTime}) + plotattributes[k] = (v[1].instant.periods.value, v[2].instant.periods.value) else plotattributes[k] = v end diff --git a/src/backends/pyplot.jl b/src/backends/pyplot.jl index 8a62292f..7df748f1 100644 --- a/src/backends/pyplot.jl +++ b/src/backends/pyplot.jl @@ -799,6 +799,9 @@ function py_set_scale(ax, sp::Subplot, axis::Axis) letter = axis[:letter] scale in supported_scales() || return @warn("Unhandled scale value in pyplot: $scale") func = getproperty(ax, Symbol("set_", letter, "scale")) + if PyPlot.version ≥ v"3.3" # https://matplotlib.org/3.3.0/api/api_changes.html + letter = Symbol("") + end kw = KW() arg = if scale == :identity "linear" diff --git a/src/ijulia.jl b/src/ijulia.jl index 13fc3b2e..7d2786ee 100644 --- a/src/ijulia.jl +++ b/src/ijulia.jl @@ -54,9 +54,9 @@ function _ijulia_display_dict(plt::Plot) elseif output_type == :html mime = "text/html" out[mime] = sprint(show, MIME(mime), plt) + _ijulia__extra_mime_info!(plt, out) else error("Unsupported output type $output_type") end - _ijulia__extra_mime_info!(plt, out) out end diff --git a/test/integration_dates.jl b/test/integration_dates.jl index 6a5756c7..081d69fb 100644 --- a/test/integration_dates.jl +++ b/test/integration_dates.jl @@ -13,4 +13,48 @@ using Plots, Test, Dates ref_xlims = (x[1].instant.periods.value, x[end].instant.periods.value) @test Plots.ylims(p) == ref_ylims @test Plots.xlims(p) == ref_xlims + #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + @static if haskey(ENV, "APPVEYOR") + @info "Skipping display tests on AppVeyor" + else + @test isa(display(p), Nothing) == true + closeall() + end +end # testset + +@testset "Date xlims" begin + y=[1.0*i*i for i in 1:10] + x=[Date(2019,11,i) for i in 1:10] + span = (Date(2019,10,31), Date(2019,11,11)) + + ref_xlims = map(date->date.instant.periods.value, span) + + p = plot(x,y, xlims=span, widen = false) + + @test Plots.xlims(p) == ref_xlims + #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + @static if haskey(ENV, "APPVEYOR") + @info "Skipping display tests on AppVeyor" + else + @test isa(display(p), Nothing) == true + closeall() + end +end # testset + +@testset "DateTime xlims" begin + y=[1.0*i*i for i in 1:10] + x=[DateTime(2019,11,i,11) for i in 1:10] + span = (DateTime(2019,10,31,11,59,59), DateTime(2019,11,11,12,01,15)) + + ref_xlims = map(date->date.instant.periods.value, span) + + p = plot(x,y, xlims=span, widen = false) + @test Plots.xlims(p) == ref_xlims + #@static if (haskey(ENV, "APPVEYOR") || haskey(ENV, "CI")) + @static if haskey(ENV, "APPVEYOR") + @info "Skipping display tests on AppVeyor" + else + @test isa(display(p), Nothing) == true + closeall() + end end # testset diff --git a/test/runtests.jl b/test/runtests.jl index b37e91eb..09ec3a31 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -33,10 +33,10 @@ include("test_axes.jl") include("test_axis_letter.jl") include("test_components.jl") include("test_shorthands.jl") +include("integration_dates.jl") include("test_recipes.jl") include("test_hdf5plots.jl") include("test_pgfplotsx.jl") -include("integration_dates.jl") reference_dir(args...) = joinpath(homedir(), ".julia", "dev", "PlotReferenceImages", args...)