From 79614ffcec3854dafe76b8bd2653f84369b17276 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 16 Mar 2020 09:17:15 +0100 Subject: [PATCH 1/4] fix StaticArray plotting --- .gitignore | 1 + src/series.jl | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 1bac5f19..0c89a967 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ deps/plotly-latest.min.js deps/build.log deps/deps.jl Manifest.toml +dev/ diff --git a/src/series.jl b/src/series.jl index bba2f313..61676b84 100644 --- a/src/series.jl +++ b/src/series.jl @@ -15,7 +15,7 @@ prepareSeriesData(x) = error("Cannot convert $(typeof(x)) to series data for plo prepareSeriesData(::Nothing) = nothing prepareSeriesData(t::Tuple{T, T}) where {T<:Number} = t prepareSeriesData(f::Function) = f -prepareSeriesData(a::AbstractArray{<:MaybeNumber}) = replace!( +prepareSeriesData(a::AbstractArray{<:MaybeNumber}) = replace( x -> ismissing(x) || isinf(x) ? NaN : x, map(float,a)) prepareSeriesData(a::AbstractArray{<:MaybeString}) = replace(x -> ismissing(x) ? "" : x, a) From 35c68c88904602645db52be62fead5c2e08bc12f Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 16 Mar 2020 16:33:25 +0100 Subject: [PATCH 2/4] only copy for immutables --- src/series.jl | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/series.jl b/src/series.jl index 61676b84..3776a74d 100644 --- a/src/series.jl +++ b/src/series.jl @@ -15,9 +15,10 @@ prepareSeriesData(x) = error("Cannot convert $(typeof(x)) to series data for plo prepareSeriesData(::Nothing) = nothing prepareSeriesData(t::Tuple{T, T}) where {T<:Number} = t prepareSeriesData(f::Function) = f -prepareSeriesData(a::AbstractArray{<:MaybeNumber}) = replace( - x -> ismissing(x) || isinf(x) ? NaN : x, - map(float,a)) +function prepareSeriesData(a::AbstractArray{<:MaybeNumber}) + f = isimmutable(a) ? replace : replace! + a = f(x -> ismissing(x) || isinf(x) ? NaN : x, map(float, a)) +end prepareSeriesData(a::AbstractArray{<:MaybeString}) = replace(x -> ismissing(x) ? "" : x, a) prepareSeriesData(s::Surface{<:AMat{<:MaybeNumber}}) = Surface(prepareSeriesData(s.surf)) prepareSeriesData(s::Surface) = s # non-numeric Surface, such as an image From 4b5ec3ad07ec1b5923b3e808a452ff49c3df2f85 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 16 Mar 2020 22:20:42 +0100 Subject: [PATCH 3/4] add prepareSeriesData method for AbstractRanges --- src/series.jl | 1 + 1 file changed, 1 insertion(+) diff --git a/src/series.jl b/src/series.jl index 3776a74d..211472c0 100644 --- a/src/series.jl +++ b/src/series.jl @@ -15,6 +15,7 @@ prepareSeriesData(x) = error("Cannot convert $(typeof(x)) to series data for plo prepareSeriesData(::Nothing) = nothing prepareSeriesData(t::Tuple{T, T}) where {T<:Number} = t prepareSeriesData(f::Function) = f +prepareSeriesData(ar::AbstractRange{<:Number}) = ar function prepareSeriesData(a::AbstractArray{<:MaybeNumber}) f = isimmutable(a) ? replace : replace! a = f(x -> ismissing(x) || isinf(x) ? NaN : x, map(float, a)) From a800f8d4d9ccfd50633f5533ca545e53df54f262 Mon Sep 17 00:00:00 2001 From: Daniel Schwabeneder Date: Mon, 16 Mar 2020 22:53:33 +0100 Subject: [PATCH 4/4] add test example --- Project.toml | 4 +++- src/examples.jl | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 0bd09e7b..0c554df8 100644 --- a/Project.toml +++ b/Project.toml @@ -57,13 +57,15 @@ ImageMagick = "6218d12a-5da1-5696-b52f-db25d2ecc6d1" Images = "916415d5-f1e6-5110-898d-aaa5f9f070e0" LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" LibGit2 = "76f85450-5226-5b5a-8eaa-529ad045b433" +OffsetArrays = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" PGFPlotsX = "8314cec4-20b6-5062-9cdb-752b83310925" RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" +StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" UnicodePlots = "b8865327-cd53-5732-bb35-84acbb429228" VisualRegressionTests = "34922c18-7c2a-561c-bac1-01e79b2c4c92" [targets] -test = ["FileIO", "GeometryTypes", "Gtk", "ImageMagick", "Images", "LaTeXStrings", "LibGit2", "PGFPlotsX", "Random", "RDatasets", "StatsPlots", "Test", "UnicodePlots", "VisualRegressionTests"] +test = ["FileIO", "GeometryTypes", "Gtk", "ImageMagick", "Images", "LaTeXStrings", "LibGit2", "OffsetArrays", "PGFPlotsX", "Random", "RDatasets", "StaticArrays", "StatsPlots", "Test", "UnicodePlots", "VisualRegressionTests"] diff --git a/src/examples.jl b/src/examples.jl index 950cd970..8864c648 100644 --- a/src/examples.jl +++ b/src/examples.jl @@ -875,6 +875,20 @@ const _examples = PlotExample[ end, ], ), + PlotExample( + "Array Types", + "Plots supports different `Array` types that follow the `AbstractArray` interface, like `StaticArrays` and `OffsetArrays.`", + [ + quote + begin + using StaticArrays, OffsetArrays + sv = SVector{10}(rand(10)) + ov = OffsetVector(rand(10), -2) + plot([sv, ov], label = ["StaticArray" "OffsetArray"]) + end + end, + ], + ), ] # Some constants for PlotDocs and PlotReferenceImages