# How to use CairoMakie?

**URL:** <https://discourse.julialang.org/t/how-to-use-cairomakie/25001>\
**Category:** General Usage\
**Tags:** plotting\
**Created:** [June 6, 2019, 9:37am UTC](https://discourse.julialang.org/t/how-to-use-cairomakie/25001 "2019-06-06T09:37:37Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![cserteGT3](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/csertegt3/32/8283_2.png) [@cserteGT3](https://discourse.julialang.org/u/cserteGT3)\
**Post date:** [June 6, 2019, 9:37am UTC](https://discourse.julialang.org/t/how-to-use-cairomakie/25001/1 "2019-06-06T09:37:37Z")

</div>

I can’t figure out, how to use Makie with CairoMakie and neither found tutorials on it.  
What I tried:

```julia
(RealTimePlot-julia) pkg> st
    Status `C:\Users\EMI\Documents\cstamas_SVN\cstamas\JuliaRobotics\RealTimePlot-julia\Project.toml`
  [537997a7] AbstractPlotting v0.9.8
  [13f3f980] CairoMakie v0.1.1
  [864edb3b] DataStructures v0.15.0
  [fc18253b] LazyJSON v0.1.1
  [510215fc] Observables v0.2.3
  [731186ca] RecursiveArrayTools v0.20.0

julia> using CairoMakie, AbstractPlotting

julia> scatter(rand(10))
ERROR: MethodError: no method matching isnan(::Point{2,Float32})
Closest candidates are:
  isnan(::BigFloat) at mpfr.jl:879
  isnan(::Missing) at missing.jl:83
  isnan(::Float16) at float.jl:530
  ...
Stacktrace:
 [1] minmax at C:\Users\EMI\.julia\packages\GeometryTypes\TFiQ7\src\hyperrectangles.jl:177 [inlined]
 [2] GeometryTypes.HyperRectangle{3,Float32}(::Array{Point{2,Float32},1}) at C:\Users\EMI\.julia\packages\GeometryTypes\TFiQ7\src\hyperrectangles.jl:202
 [3] atomic_limits(::Scatter{...}) at C:\Users\EMI\.julia\packages\AbstractPlotting\zoqRL\src\layouting\data_limits.jl:16
 [4] data_limits(::Scatter{...}) at C:\Users\EMI\.julia\packages\AbstractPlotting\zoqRL\src\layouting\data_limits.jl:9
 [5] data_limits(::Array{AbstractPlot,1}) at C:\Users\EMI\.julia\packages\AbstractPlotting\zoqRL\src\layouting\data_limits.jl:111
 [6] data_limits at C:\Users\EMI\.julia\packages\AbstractPlotting\zoqRL\src\layouting\data_limits.jl:119 [inlined]
 [7] update_limits!(::Scene, ::AbstractPlotting.Automatic, ::Vec{3,Float32}) at C:\Users\EMI\.julia\packages\AbstractPlotting\zoqRL\src\interfaces.jl:670
 [8] update_limits!(::Scene) at C:\Users\EMI\.julia\packages\AbstractPlotting\zoqRL\src\interfaces.jl:666
 [9] plot!(::Scene, ::Type{Scatter{...}}, ::Attributes, ::Tuple{Observables.Observable{Array{Float64,1}}}, ::Observables.Observable{Tuple{Array{Point{2,Float32},1}}}) at C:\Users\EMI\.julia\packages\AbstractPlotting\zoqRL\src\interfaces.jl:558
 [10] #plot!#195(::Base.Iterators.Pairs{Union{},Union{},Tuple{},NamedTuple{(),Tuple{}}}, ::Function, ::Scene, ::Type{Scatter{...}}, ::Attributes, ::Array{Float64,1}) at C:\Users\EMI\.julia\packages\AbstractPlotting\zoqRL\src\interfaces.jl:515
 [11] #scatter#136 at C:\Users\EMI\.julia\packages\AbstractPlotting\zoqRL\src\interfaces.jl:484 [inlined]
 [12] scatter(::Array{Float64,1}) at C:\Users\EMI\.julia\packages\AbstractPlotting\zoqRL\src\recipes.jl:11
 [13] top-level scope at none:0

julia> versioninfo()
Julia Version 1.1.1
Commit 55e36cc308 (2019-05-16 04:10 UTC)
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.1 (ORCJIT, sandybridge)

```

---

<div class="post-metadata">

**Author:** ![sdanisch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sdanisch/32/1406_2.png) [@sdanisch](https://discourse.julialang.org/u/sdanisch)\
**Post date:** [June 6, 2019, 10:00am UTC](https://discourse.julialang.org/t/how-to-use-cairomakie/25001/2 "2019-06-06T10:00:48Z")

</div>

That error unrelated to CairoMakie and a side effect of you being on StaticArrays#master!  
I just merged: [https://github.com/JuliaGeometry/GeometryTypes.jl/pull/172](https://github.com/JuliaGeometry/GeometryTypes.jl/pull/172)  
I’ll tag it once StaticArrays got tagged!

---

<div class="post-metadata">

**Author:** ![sdanisch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sdanisch/32/1406_2.png) [@sdanisch](https://discourse.julialang.org/u/sdanisch)\
**Post date:** [June 6, 2019, 10:09am UTC](https://discourse.julialang.org/t/how-to-use-cairomakie/25001/3 "2019-06-06T10:09:44Z")

</div>

Btw, there is a working notebook for CairoMakie that you can remix:

> **[CairoMakie](https://nextjournal.com/julia/cairomakie-template)**

---

<div class="post-metadata">

**Author:** ![cserteGT3](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/csertegt3/32/8283_2.png) [@cserteGT3](https://discourse.julialang.org/u/cserteGT3)\
**Post date:** [June 6, 2019, 10:48am UTC](https://discourse.julialang.org/t/how-to-use-cairomakie/25001/4 "2019-06-06T10:48:16Z")

</div>

> [@sdanisch](#):
>
> That error unrelated to CairoMakie and a side effect of you being on StaticArrays#master!

Not sure why is that, but I added `StaticArrays#master` and `GeometryTypes#master` and didn’t get the error. However the plot is not showing up (I tried `AbstractPlotting. __init__ ()` and `display(AbstractPlotting.PlotDisplay(), scene);` too).

---

<div class="post-metadata">

**Author:** ![sdanisch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sdanisch/32/1406_2.png) [@sdanisch](https://discourse.julialang.org/u/sdanisch)\
**Post date:** [June 6, 2019, 11:02am UTC](https://discourse.julialang.org/t/how-to-use-cairomakie/25001/5 "2019-06-06T11:02:17Z")

</div>

In the REPL, there is currently no display backend available for Cairo - you need to use it in Atom/IJulia or Nextjournal 😉

---

<div class="post-metadata">

**Author:** ![cserteGT3](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/csertegt3/32/8283_2.png) [@cserteGT3](https://discourse.julialang.org/u/cserteGT3)\
**Post date:** [June 6, 2019, 12:33pm UTC](https://discourse.julialang.org/t/how-to-use-cairomakie/25001/6 "2019-06-06T12:33:22Z")

</div>

Ohh did not know that.  
Thank your for all the help!

---

<div class="post-metadata">

**Author:** ![tamasgal](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamasgal/32/27946_2.png) [@tamasgal](https://discourse.julialang.org/u/tamasgal)\
**Post date:** [June 6, 2019, 9:17pm UTC](https://discourse.julialang.org/t/how-to-use-cairomakie/25001/7 "2019-06-06T21:17:55Z")

</div>

Ah, I got the same error with Makie:

```julia
julia> scatter([1,2,3],[4,5,6])
ERROR: MethodError: no method matching isnan(::Point{2,Float32})
Closest candidates are:
  isnan(::BigFloat) at mpfr.jl:879
  isnan(::Missing) at missing.jl:83
  isnan(::Float16) at float.jl:530

```

and

```julia
julia> meshscatter([[1,2,3],[4,5,6]])
ERROR: No overload for MeshScatter{...} and also no overload for trait AbstractPlotting.PointBased() found! Arguments: (Array{Array{Int64,1},1},)

```

I did not install `StaticArrays#master` explicitly, so don’t understand how this happened, but `pkg> add StaticArrays` solved the issue.
