# Plotting a closed curve in 3D

**URL:** <https://discourse.julialang.org/t/plotting-a-closed-curve-in-3d/61691>\
**Category:** Visualization\
**Tags:** plots\
**Created:** [May 23, 2021, 7:32pm UTC](https://discourse.julialang.org/t/plotting-a-closed-curve-in-3d/61691 "2021-05-23T19:32:18Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![e3c6](https://avatars.discourse-cdn.com/v4/letter/e/e79b87/32.png) [@e3c6](https://discourse.julialang.org/u/e3c6)\
**Post date:** [May 23, 2021, 7:32pm UTC](https://discourse.julialang.org/t/plotting-a-closed-curve-in-3d/61691/1 "2021-05-23T19:32:18Z")

</div>

How do you plot a closed curve in Julia? For instance using `Plots.jl`. I would like to draw an ellipse into a 3-dimensional plot.

---

<div class="post-metadata">

**Author:** ![jzr](https://avatars.discourse-cdn.com/v4/letter/j/eb9ed0/32.png) [@jzr](https://discourse.julialang.org/u/jzr)\
**Post date:** [May 23, 2021, 8:15pm UTC](https://discourse.julialang.org/t/plotting-a-closed-curve-in-3d/61691/2 "2021-05-23T20:15:14Z")

</div>

Maybe these give some ideas

[https://lazarusa.github.io/Webpage/codeJuliaMakie.html#collapse3dplots](https://lazarusa.github.io/Webpage/codeJuliaMakie.html#collapse3dplots)

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [May 23, 2021, 9:03pm UTC](https://discourse.julialang.org/t/plotting-a-closed-curve-in-3d/61691/3 "2021-05-23T21:03:05Z")

</div>

With Plots.jl gr() you can draw parametric curves as follows:

```julia
using Rotations, Plots; gr()

M(u) = [a/2*cos(u), b/2*sin(u), 0] # ellipse in X-Y plane
RM(u) = RotXYZ(α,β,γ) * M(u) .+ C # rotated + shifted ellipse in 3D

C = [1, 1, 2] # center of ellipse
α, β, γ = π/4, 0, π/3 # Euler angles
a, b = 5.0, 2.0 # ellipse principal axes
u = LinRange(0, 2π, 72)
xs, ys, zs = [[p[i] for p in RM.(u)] for i in 1:3]

p = plot(xs,ys,zs, lc=:blue, lw=3, ratio=1, legend=false, xlabel="X",ylabel="Y",zlabel="Z")

```

![Plots_gr_3D_ellipse](https://global.discourse-cdn.com/julialang/original/3X/e/9/e9c84b6a72a3915ae55dbc9fe03c42ac872ae9a3.png)

Can also add some X-Y-Z projections to help 3D visualization:

```julia
# project curve to X-Y-Z planes
xl, yl, zl = xlims(p), ylims(p), zlims(p)
plot!(xs, ys, zl[1].+ 0*zs, lw=1, lc=:lightgray)
plot!(xs, yl[2] .+ 0*ys, zs, lw=1, lc=:lightgray)
plot!(xl[1] .+ 0*xs, ys, zs, lw=1, lc=:lightgray) 
plot!(xs,ys,zs, lc=:blue,lw=3,xlims=xl,ylims=yl,zlims=zl) # plot again to front

```

![Plots_gr_3D_ellipse_with_xyz_projections](https://global.discourse-cdn.com/julialang/original/3X/5/b/5b89bd046dae3f476878f453d5283f96a8eb6f45.png)

---

<div class="post-metadata">

**Author:** ![e3c6](https://avatars.discourse-cdn.com/v4/letter/e/e79b87/32.png) [@e3c6](https://discourse.julialang.org/u/e3c6)\
**Post date:** [May 24, 2021, 1:38pm UTC](https://discourse.julialang.org/t/plotting-a-closed-curve-in-3d/61691/4 "2021-05-24T13:38:05Z")

</div>

Can you post the code you used to draw the x,y,z projections?

---

<div class="post-metadata">

**Author:** ![rafael.guerra](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rafael.guerra/32/216610_2.png) [@rafael.guerra](https://discourse.julialang.org/u/rafael.guerra)\
**Post date:** [May 24, 2021, 2:23pm UTC](https://discourse.julialang.org/t/plotting-a-closed-curve-in-3d/61691/5 "2021-05-24T14:23:06Z")

</div>

@e3c6, as requested, see above.

_ **NB:** last drawing using Euler angles:_ `α, β, γ = -π/6, -π/6, -π/2`
