# How to visualize infinite lines with Makie.jl?

**URL:** <https://discourse.julialang.org/t/how-to-visualize-infinite-lines-with-makie-jl/100325>\
**Category:** Visualization\
**Tags:** question, plotting, makie\
**Created:** [June 14, 2023, 12:08pm UTC](https://discourse.julialang.org/t/how-to-visualize-infinite-lines-with-makie-jl/100325 "2023-06-14T12:08:32Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [June 14, 2023, 12:08pm UTC](https://discourse.julialang.org/t/how-to-visualize-infinite-lines-with-makie-jl/100325/1 "2023-06-14T12:08:32Z")

</div>

Say I have an infinite line passing through the points (0,0,0) and (1,1,1) in 3D. How to visualize this line in Makie so that it is always visible no matter the level of zoom?

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://discourse.julialang.org/u/jules)\
**Post date:** [June 14, 2023, 12:16pm UTC](https://discourse.julialang.org/t/how-to-visualize-infinite-lines-with-makie-jl/100325/2 "2023-06-14T12:16:40Z")

</div>

We don’t have that for 3D, yet. But the way it works is to derive the endpoints of the line using the current projection matrix / axis limits. Therefore, whenever the projection changes, the line updates.

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [June 14, 2023, 5:40pm UTC](https://discourse.julialang.org/t/how-to-visualize-infinite-lines-with-makie-jl/100325/3 "2023-06-14T17:40:16Z")

</div>

Is there an example in 2D that works already @jules? We have a couple of things that are infinite and that we would like to visualize such as lines, rays, planes.

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://discourse.julialang.org/u/jules)\
**Post date:** [June 14, 2023, 7:17pm UTC](https://discourse.julialang.org/t/how-to-visualize-infinite-lines-with-makie-jl/100325/4 "2023-06-14T19:17:17Z")

</div>

The projection thing you can look at in the `ablines` code, for example. You’d have to analyze that matrix differently, though, for your 3D usecase: [Makie.jl/src/basic\_recipes/ablines.jl at master · MakieOrg/Makie.jl · GitHub](https://github.com/MakieOrg/Makie.jl/blob/master/src/basic_recipes/ablines.jl#L24)

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [October 30, 2023, 6:13pm UTC](https://discourse.julialang.org/t/how-to-visualize-infinite-lines-with-makie-jl/100325/5 "2023-10-30T18:13:00Z")

</div>

If there is a built-in function that we can call as `Makie.line(p1, p2)`, we can update our recipes accordingly.

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [November 7, 2025, 6:12pm UTC](https://discourse.julialang.org/t/how-to-visualize-infinite-lines-with-makie-jl/100325/6 "2025-11-07T18:12:17Z")

</div>

@jules `Makie.ablines` and `Makie.vlines` work perfectly in 2D. What is the current status for 3D lines? Any built-in recipe that we could use to visualize lines that cross the entire scene?

---

<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:** [November 7, 2025, 6:21pm UTC](https://discourse.julialang.org/t/how-to-visualize-infinite-lines-with-makie-jl/100325/7 "2025-11-07T18:21:41Z")

</div>

I guess in Tyler we do something similar:

> <https://github.com/MakieOrg/Tyler.jl/blob/master/src/map3d.jl#L99-L118>

---

<div class="post-metadata">

**Author:** ![juliohm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/juliohm/32/215266_2.png) [@juliohm](https://discourse.julialang.org/u/juliohm)\
**Post date:** [November 7, 2025, 6:27pm UTC](https://discourse.julialang.org/t/how-to-visualize-infinite-lines-with-makie-jl/100325/8 "2025-11-07T18:27:25Z")

</div>

Thank you @sdanisch. I am bit lost with the more low-level camera details. If there is a high-level recipe that takes a line representation in 3D space and produces the desired visualization, that would help a lot.

---

<div class="post-metadata">

**Author:** ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)\
**Post date:** [November 8, 2025, 4:37pm UTC](https://discourse.julialang.org/t/how-to-visualize-infinite-lines-with-makie-jl/100325/9 "2025-11-08T16:37:39Z")

</div>

Does something like `lines!([p1, p2], xautolimits=false, yautolimits=false, zautolimits=false)` work for 3d? With p1 and p2 finite but very far from each other, much further than any reasonable zoom level.

---

<div class="post-metadata">

**Author:** ![asinghvi17](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/asinghvi17/32/8272_2.png) [@asinghvi17](https://discourse.julialang.org/u/asinghvi17)\
**Post date:** [November 8, 2025, 10:56pm UTC](https://discourse.julialang.org/t/how-to-visualize-infinite-lines-with-makie-jl/100325/10 "2025-11-08T22:56:32Z")

</div>

Unfortunately not, depending on your camera’s near and farclip settings (that depend on data) the line would be clipped at a seemingly arbitrary point.
