Skip to content

Commit ac5f583

Browse files
vchuravylongemen3000giordano
authored
Makie extension (#174)
* makie extension * style typo * resolve some comments * add version bound for Makie * make sure convert arguments works * add test * fixup! add test * fixup! add test * fixup! add test * finish tests * drop support for pre 1.10 * allow Makie 0.22 * Apply suggestions from code review --------- Co-authored-by: longemen3000 <longemen3000@gmail.com> Co-authored-by: Mosè Giordano <765740+giordano@users.noreply.github.com>
1 parent 0063930 commit ac5f583

File tree

5 files changed

+82
-4
lines changed

5 files changed

+82
-4
lines changed

.github/workflows/ci.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ jobs:
2121
fail-fast: false
2222
matrix:
2323
julia-version:
24-
- "1.0"
2524
- "1"
2625
- "nightly"
2726
os:

Project.toml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@ Requires = "ae029012-a4dd-5104-9daa-d747884805df"
1313
[weakdeps]
1414
BaseType = "7fbed51b-1ef5-4d67-9085-a4a9b26f478c"
1515
Juno = "e5e0dc1b-0480-54bc-9374-aad01c23163d"
16+
Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
1617
RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
1718
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
1819
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
1920

2021
[extensions]
2122
MeasurementsBaseTypeExt = "BaseType"
2223
MeasurementsJunoExt = "Juno"
24+
MeasurementsMakieExt = "Makie"
2325
MeasurementsRecipesBaseExt = "RecipesBase"
2426
MeasurementsSpecialFunctionsExt = "SpecialFunctions"
2527
MeasurementsUnitfulExt = "Unitful"
@@ -30,6 +32,7 @@ BaseType = "0.2"
3032
Calculus = "0.4.1, 0.5"
3133
Juno = "0.8"
3234
LinearAlgebra = "<0.0.1, 1"
35+
Makie = "0.21, 0.22"
3336
Printf = "<0.0.1, 1"
3437
QuadGK = "2"
3538
RecipesBase = "0.6.0, 0.7, 0.8, 1.0"
@@ -38,12 +41,13 @@ SpecialFunctions = "0.8, 1, 2"
3841
Statistics = "<0.0.1, 1"
3942
Test = "<0.0.1, 1"
4043
Unitful = "1"
41-
julia = "1"
44+
julia = "1.10"
4245

4346
[extras]
4447
Aqua = "4c88cf16-eb10-579e-8560-4a9242c79595"
4548
BaseType = "7fbed51b-1ef5-4d67-9085-a4a9b26f478c"
4649
Juno = "e5e0dc1b-0480-54bc-9374-aad01c23163d"
50+
Makie = "ee78f7c6-11fb-53f2-987a-cfe4a2b5a57a"
4751
QuadGK = "1fd47b50-473d-5c70-9696-f719f8f3bcdc"
4852
RecipesBase = "3cdcf5f2-1ef4-517c-9805-6587b60abb01"
4953
SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b"
@@ -52,4 +56,4 @@ Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40"
5256
Unitful = "1986cc42-f94f-5a68-af5c-568840ba703d"
5357

5458
[targets]
55-
test = ["Aqua", "BaseType", "QuadGK", "RecipesBase", "SpecialFunctions", "Statistics", "Test", "Unitful"]
59+
test = ["Aqua", "Makie", "BaseType", "QuadGK", "RecipesBase", "SpecialFunctions", "Statistics", "Test", "Unitful"]

ext/MeasurementsMakieExt.jl

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
### plot-recipes.jl
2+
#
3+
# Maintainer: Mosè Giordano <mose AT gnu DOT org>
4+
# Keywords: uncertainty, error propagation, physics, plots
5+
#
6+
# This file is a part of Measurements.jl.
7+
#
8+
# License is MIT "Expat".
9+
#
10+
### Commentary:
11+
#
12+
# This file defines the recipes to plot Measurements vectors with Makie.jl package in 2D.
13+
#
14+
### Code:
15+
module MeasurementsMakieExt
16+
17+
if isdefined(Base, :get_extension)
18+
using Measurements: Measurement, value, uncertainty
19+
using Makie: Makie, PointBased, Errorbars, Band
20+
else
21+
using ..Measurements: Measurement, value, uncertainty
22+
using ..Makie: Makie, PointBased, Errorbars, Band
23+
end
24+
# PointBased plots
25+
Makie.convert_arguments(P::PointBased, x::AbstractVector{<:Measurement}, y::AbstractVector{<:Measurement}) =
26+
Makie.convert_arguments(P, value.(x), value.(y))
27+
Makie.convert_arguments(P::PointBased, x::AbstractVector{<:Real}, y::AbstractVector{<:Measurement}) =
28+
Makie.convert_arguments(P, x, value.(y))
29+
Makie.convert_arguments(P::PointBased, x::AbstractVector{<:Measurement}, y::AbstractVector{<:Real}) =
30+
Makie.convert_arguments(P, value.(x), y)
31+
32+
# errorbars
33+
Makie.convert_arguments(P::Type{<:Errorbars}, x::AbstractVector{<:Measurement}, y::AbstractVector{<:Measurement}, e::AbstractVector{<:Measurement}) =
34+
Makie.convert_arguments(P, value.(x), value.(y), uncertainty.(e))
35+
Makie.convert_arguments(P::Type{<:Errorbars}, x::AbstractVector{<:Measurement}, y::AbstractVector{<:Real}) =
36+
Makie.convert_arguments(P, value.(x), y, uncertainty.(x))
37+
Makie.convert_arguments(P::Type{<:Errorbars}, x::AbstractVector{<:Real}, y::AbstractVector{<:Measurement}) =
38+
Makie.convert_arguments(P, x, value.(y), uncertainty.(y))
39+
40+
# band
41+
Makie.convert_arguments(P::Type{<:Band}, x::AbstractVector{<:Measurement}, y::AbstractVector{<:Measurement}) =
42+
Makie.convert_arguments(P, value.(x), value.(y) - uncertainty.(y), value.(y) + uncertainty.(y))
43+
Makie.convert_arguments(P::Type{<:Band}, x::AbstractVector{<:Real}, y::AbstractVector{<:Measurement}) =
44+
Makie.convert_arguments(P, x, value.(y) - uncertainty.(y), value.(y) + uncertainty.(y))
45+
46+
end #module

test/makie.jl

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import Makie: convert_arguments, Point, PointBased, Errorbars, Band, Vec
2+
3+
@testset "PointBased" begin
4+
@test convert_arguments(PointBased(), [1, 2], [Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)]) == (Point{2,Float64}[[1.0, 1.0], [2.0, 2.0]],)
5+
@test convert_arguments(PointBased(), [Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)], [1, 2]) == (Point{2,Float64}[[1.0, 1.0], [2.0, 2.0]],)
6+
@test convert_arguments(PointBased(), [Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)],
7+
[Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)]) == (Point{2,Float64}[[1.0, 1.0], [2.0, 2.0]],)
8+
end
9+
10+
@testset "Errorbars" begin
11+
@test convert_arguments(Errorbars, [1, 2], [Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)]) == (Vec{4, Float64}[[1.0, 1.0, 0.5, 0.5], [2.0, 2.0, 0.1, 0.1]],)
12+
@test convert_arguments(Errorbars, [Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)], [1, 2]) == (Vec{4, Float64}[[1.0, 1.0, 0.5, 0.5], [2.0, 2.0, 0.1, 0.1]],)
13+
# TODO: Currently intentionally ambigious.
14+
# @test convert_arguments(Errorbars, [Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)],
15+
# [Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)]) == (Vec{4, Float64}[[1.0, 1.0, 0.5, 0.5], [2.0, 2.0, 0.1, 0.1]],)
16+
@test convert_arguments(Errorbars, [Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)],
17+
[Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)],
18+
[Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)]) == (Vec{4, Float64}[[1.0, 1.0, 0.5, 0.5], [2.0, 2.0, 0.1, 0.1]],)
19+
end
20+
21+
@testset "Band" begin
22+
@test convert_arguments(Band, [1, 2], [Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)]) == (Point{2, Float64}[[1.0, 0.5], [2.0, 1.9]], Point{2, Float64}[[1.0, 1.5], [2.0, 2.1]])
23+
@test convert_arguments(Band, [Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)],
24+
[Measurements.measurement(1.0, 0.5), Measurements.measurement(2.0, 0.1)]) == (Point{2, Float64}[[1.0, 0.5], [2.0, 1.9]], Point{2, Float64}[[1.0, 1.5], [2.0, 2.1]])
25+
end

test/runtests.jl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using Measurements, SpecialFunctions, QuadGK, Calculus, BaseType
1+
using Measurements, SpecialFunctions, QuadGK, Calculus, BaseType, Makie
22
using Test, LinearAlgebra, Statistics, Unitful, Printf, Aqua
33

44
if !isdefined(Base,:get_extension)
@@ -1047,6 +1047,10 @@ end
10471047
include("plots.jl")
10481048
end
10491049

1050+
@testset "Makie recipes" begin
1051+
include("makie.jl")
1052+
end
1053+
10501054
@testset "Ranges" begin
10511055
m = 2 ± 1
10521056
@test m .+ (1:6) isa StepRangeLen

0 commit comments

Comments
 (0)