Filling between two arrays with ListPointPlot3DFilling between two linesHatched Filling for ListPlotFilling the area between two curves, only where and if the second lies above the first oneCan you Plot over some range but apply the “Filling” option over a smaller range?Color points in ListPointPlot3DCombined ListPlot3D using arrays of different lengthFilling between two plots up to some boundaries onlyHow do I add a line legend to a list plot?ListLinePlot with vertical filling gradientRotating a plot with a gradient filling defined by a functionListPointPlot3D filling between two lists
Is there a practical difference between different types of Berachos?
What if you don't bring your credit card or debit for incidentals?
How to decline physical affection from a child whose parents are pressuring them?
Incremental Ranges!
Rotated Position of Integers
Could a guilty Boris Johnson be used to cancel Brexit?
You've spoiled/damaged the card
What people are called boars ("кабан") and why?
Is there a term for this?
Is it OK to bring delicacies from hometown as tokens of gratitude for an out-of-town interview?
Applicants clearly not having the skills they advertise
Can you please explain this joke: "I'm going bananas is what I tell my bananas before I leave the house"?
Beginner's snake game using PyGame
Humans meet a distant alien species. How do they standardize? - Units of Measure
How can I grammatically understand "Wir über uns"?
Computing the differentials in the Adams spectral sequence
What is the right way to float a home lab?
Comma Code - Ch. 4 Automate the Boring Stuff
How can I make 20-200 ohm variable resistor look like a 20-240 ohm resistor?
Story about a toddler with god-like powers, dangerous tantrums
California: "For quality assurance, this phone call is being recorded"
Can a class take a different class's spell in their ritual book?
Is the capacitor drawn or wired wrongly?
Is there a rule that prohibits us from using 2 possessives in a row?
Filling between two arrays with ListPointPlot3D
Filling between two linesHatched Filling for ListPlotFilling the area between two curves, only where and if the second lies above the first oneCan you Plot over some range but apply the “Filling” option over a smaller range?Color points in ListPointPlot3DCombined ListPlot3D using arrays of different lengthFilling between two plots up to some boundaries onlyHow do I add a line legend to a list plot?ListLinePlot with vertical filling gradientRotating a plot with a gradient filling defined by a functionListPointPlot3D filling between two lists
$begingroup$
I would like to Plot two Arrays and use the function Filling to generate a soil layer:
bb = 32, 100, 2005, 3, 110, 2025, 4, 120, 2230, 5, 130,
2130, 6, 140, 2105, 7, 150, 2013, 8, 160, 2225;
cc = 32, 100, 1000, 3, 110, 1020, 4, 120, 1225, 5, 130,
1125, 6, 140, 1100, 7, 150, 1008, 8, 160, 1220;
ListPlot3D[cc, bb]
plotting filling
New contributor
$endgroup$
add a comment |
$begingroup$
I would like to Plot two Arrays and use the function Filling to generate a soil layer:
bb = 32, 100, 2005, 3, 110, 2025, 4, 120, 2230, 5, 130,
2130, 6, 140, 2105, 7, 150, 2013, 8, 160, 2225;
cc = 32, 100, 1000, 3, 110, 1020, 4, 120, 1225, 5, 130,
1125, 6, 140, 1100, 7, 150, 1008, 8, 160, 1220;
ListPlot3D[cc, bb]
plotting filling
New contributor
$endgroup$
$begingroup$
Related, but in 2D: mathematica.stackexchange.com/questions/78626/…
$endgroup$
– Carl Lange
May 25 at 0:16
$begingroup$
This is an amazing use of Mathematica and the Wolfram Language!!! I have a minor in plant sciences and took a really influential soil science course in the process, can you clarify what you might want to do with this? How are you thinking you would be representing the various layers? It would be awesome to mark it up with the layer designations!
$endgroup$
– CA Trevillian
May 25 at 6:38
add a comment |
$begingroup$
I would like to Plot two Arrays and use the function Filling to generate a soil layer:
bb = 32, 100, 2005, 3, 110, 2025, 4, 120, 2230, 5, 130,
2130, 6, 140, 2105, 7, 150, 2013, 8, 160, 2225;
cc = 32, 100, 1000, 3, 110, 1020, 4, 120, 1225, 5, 130,
1125, 6, 140, 1100, 7, 150, 1008, 8, 160, 1220;
ListPlot3D[cc, bb]
plotting filling
New contributor
$endgroup$
I would like to Plot two Arrays and use the function Filling to generate a soil layer:
bb = 32, 100, 2005, 3, 110, 2025, 4, 120, 2230, 5, 130,
2130, 6, 140, 2105, 7, 150, 2013, 8, 160, 2225;
cc = 32, 100, 1000, 3, 110, 1020, 4, 120, 1225, 5, 130,
1125, 6, 140, 1100, 7, 150, 1008, 8, 160, 1220;
ListPlot3D[cc, bb]
plotting filling
plotting filling
New contributor
New contributor
edited May 25 at 1:36
David G. Stork
25.4k22256
25.4k22256
New contributor
asked May 24 at 23:23
KathyKathy
332
332
New contributor
New contributor
$begingroup$
Related, but in 2D: mathematica.stackexchange.com/questions/78626/…
$endgroup$
– Carl Lange
May 25 at 0:16
$begingroup$
This is an amazing use of Mathematica and the Wolfram Language!!! I have a minor in plant sciences and took a really influential soil science course in the process, can you clarify what you might want to do with this? How are you thinking you would be representing the various layers? It would be awesome to mark it up with the layer designations!
$endgroup$
– CA Trevillian
May 25 at 6:38
add a comment |
$begingroup$
Related, but in 2D: mathematica.stackexchange.com/questions/78626/…
$endgroup$
– Carl Lange
May 25 at 0:16
$begingroup$
This is an amazing use of Mathematica and the Wolfram Language!!! I have a minor in plant sciences and took a really influential soil science course in the process, can you clarify what you might want to do with this? How are you thinking you would be representing the various layers? It would be awesome to mark it up with the layer designations!
$endgroup$
– CA Trevillian
May 25 at 6:38
$begingroup$
Related, but in 2D: mathematica.stackexchange.com/questions/78626/…
$endgroup$
– Carl Lange
May 25 at 0:16
$begingroup$
Related, but in 2D: mathematica.stackexchange.com/questions/78626/…
$endgroup$
– Carl Lange
May 25 at 0:16
$begingroup$
This is an amazing use of Mathematica and the Wolfram Language!!! I have a minor in plant sciences and took a really influential soil science course in the process, can you clarify what you might want to do with this? How are you thinking you would be representing the various layers? It would be awesome to mark it up with the layer designations!
$endgroup$
– CA Trevillian
May 25 at 6:38
$begingroup$
This is an amazing use of Mathematica and the Wolfram Language!!! I have a minor in plant sciences and took a really influential soil science course in the process, can you clarify what you might want to do with this? How are you thinking you would be representing the various layers? It would be awesome to mark it up with the layer designations!
$endgroup$
– CA Trevillian
May 25 at 6:38
add a comment |
2 Answers
2
active
oldest
votes
$begingroup$
Filling -> 2 -> 1, Directive[Opacity[0.4], Red]
$endgroup$
$begingroup$
David, what format is this image in? It looks so pretty on mobile!
$endgroup$
– CA Trevillian
May 25 at 19:08
$begingroup$
@CATrevillian: I think it is PDF, but you can export the figure in numerous formats.
$endgroup$
– David G. Stork
May 25 at 19:33
$begingroup$
Definitely! Thank you! It shows the opacity accurately when I select it. It makes me wonder if we can upload 3D models somehow and observe them on a touchscreen interface
$endgroup$
– CA Trevillian
May 25 at 19:36
add a comment |
$begingroup$
Update: Since the two surfaces are separated by a plane a much easier approach is to fill both surfaces to a plane (say, the z == 1500
plane) between the two and post-process to remove the polygons whose third coordinates are constant at z
:
z = 1500.;
DeleteCases[Normal[ListPlot3D[cc, bb, PlotRange -> 500, 3000,
Filling -> 1 -> z, Opacity[.5, Green], 2 -> z, Opacity[.5, Green]]],
Polygon[_, _, z .., ___], All]
Original answer:
David's method fills from the top surface to the z == 1
plane. To fill between the two surfaces we can
- Create a
ListPlot3D
object,lp3D
, usingbb
with filling to a plane below thecc
surface (say, the planez==0
) - Post-process the output of the previous step (a) to replace the coordinates
x_, y_, 0.
withx, y, w
usingw
from the entry ofcc
whose first two coordinates matchx,y
; (b) remove the polygons at the top and bottom (these happen to be in the first group of polygons) - Use
Show
to combine the result from the previous step withListPlot3D
of the two data sets.
lp3D = ListPlot3D[bb, Filling -> 0,
FillingStyle -> Opacity[.5, Green], PlotStyle -> None,
BoundaryStyle -> None, Mesh -> None];
assocc = Association[#, #2 -> #3 & @@@ N[cc]];
lp3D = lp3D /. GraphicsComplex[a_, b___] :>
GraphicsComplex[a /. x_, y_, 0. :> x, y, assocc[x, y], b];
lp3D = Replace[lp3D, a___, EdgeForm[], ___, ___, b : EdgeForm[], ___, c___ :>
a, b, c, All];
Show[ListPlot3D[cc, bb, PlotRange -> 500, 3000], lp3D]
Note: If you define disp = Dispatch[#, #2 -> #3 & @@@ N[cc]];
and use x, y /. disp
in place of assocc[x,y]
, and 0, Infinity
in place of All
above, this method also works in version 9.
$endgroup$
add a comment |
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "387"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Kathy is a new contributor. Be nice, and check out our Code of Conduct.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f199064%2ffilling-between-two-arrays-with-listpointplot3d%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
$begingroup$
Filling -> 2 -> 1, Directive[Opacity[0.4], Red]
$endgroup$
$begingroup$
David, what format is this image in? It looks so pretty on mobile!
$endgroup$
– CA Trevillian
May 25 at 19:08
$begingroup$
@CATrevillian: I think it is PDF, but you can export the figure in numerous formats.
$endgroup$
– David G. Stork
May 25 at 19:33
$begingroup$
Definitely! Thank you! It shows the opacity accurately when I select it. It makes me wonder if we can upload 3D models somehow and observe them on a touchscreen interface
$endgroup$
– CA Trevillian
May 25 at 19:36
add a comment |
$begingroup$
Filling -> 2 -> 1, Directive[Opacity[0.4], Red]
$endgroup$
$begingroup$
David, what format is this image in? It looks so pretty on mobile!
$endgroup$
– CA Trevillian
May 25 at 19:08
$begingroup$
@CATrevillian: I think it is PDF, but you can export the figure in numerous formats.
$endgroup$
– David G. Stork
May 25 at 19:33
$begingroup$
Definitely! Thank you! It shows the opacity accurately when I select it. It makes me wonder if we can upload 3D models somehow and observe them on a touchscreen interface
$endgroup$
– CA Trevillian
May 25 at 19:36
add a comment |
$begingroup$
Filling -> 2 -> 1, Directive[Opacity[0.4], Red]
$endgroup$
Filling -> 2 -> 1, Directive[Opacity[0.4], Red]
answered May 25 at 1:15
David G. StorkDavid G. Stork
25.4k22256
25.4k22256
$begingroup$
David, what format is this image in? It looks so pretty on mobile!
$endgroup$
– CA Trevillian
May 25 at 19:08
$begingroup$
@CATrevillian: I think it is PDF, but you can export the figure in numerous formats.
$endgroup$
– David G. Stork
May 25 at 19:33
$begingroup$
Definitely! Thank you! It shows the opacity accurately when I select it. It makes me wonder if we can upload 3D models somehow and observe them on a touchscreen interface
$endgroup$
– CA Trevillian
May 25 at 19:36
add a comment |
$begingroup$
David, what format is this image in? It looks so pretty on mobile!
$endgroup$
– CA Trevillian
May 25 at 19:08
$begingroup$
@CATrevillian: I think it is PDF, but you can export the figure in numerous formats.
$endgroup$
– David G. Stork
May 25 at 19:33
$begingroup$
Definitely! Thank you! It shows the opacity accurately when I select it. It makes me wonder if we can upload 3D models somehow and observe them on a touchscreen interface
$endgroup$
– CA Trevillian
May 25 at 19:36
$begingroup$
David, what format is this image in? It looks so pretty on mobile!
$endgroup$
– CA Trevillian
May 25 at 19:08
$begingroup$
David, what format is this image in? It looks so pretty on mobile!
$endgroup$
– CA Trevillian
May 25 at 19:08
$begingroup$
@CATrevillian: I think it is PDF, but you can export the figure in numerous formats.
$endgroup$
– David G. Stork
May 25 at 19:33
$begingroup$
@CATrevillian: I think it is PDF, but you can export the figure in numerous formats.
$endgroup$
– David G. Stork
May 25 at 19:33
$begingroup$
Definitely! Thank you! It shows the opacity accurately when I select it. It makes me wonder if we can upload 3D models somehow and observe them on a touchscreen interface
$endgroup$
– CA Trevillian
May 25 at 19:36
$begingroup$
Definitely! Thank you! It shows the opacity accurately when I select it. It makes me wonder if we can upload 3D models somehow and observe them on a touchscreen interface
$endgroup$
– CA Trevillian
May 25 at 19:36
add a comment |
$begingroup$
Update: Since the two surfaces are separated by a plane a much easier approach is to fill both surfaces to a plane (say, the z == 1500
plane) between the two and post-process to remove the polygons whose third coordinates are constant at z
:
z = 1500.;
DeleteCases[Normal[ListPlot3D[cc, bb, PlotRange -> 500, 3000,
Filling -> 1 -> z, Opacity[.5, Green], 2 -> z, Opacity[.5, Green]]],
Polygon[_, _, z .., ___], All]
Original answer:
David's method fills from the top surface to the z == 1
plane. To fill between the two surfaces we can
- Create a
ListPlot3D
object,lp3D
, usingbb
with filling to a plane below thecc
surface (say, the planez==0
) - Post-process the output of the previous step (a) to replace the coordinates
x_, y_, 0.
withx, y, w
usingw
from the entry ofcc
whose first two coordinates matchx,y
; (b) remove the polygons at the top and bottom (these happen to be in the first group of polygons) - Use
Show
to combine the result from the previous step withListPlot3D
of the two data sets.
lp3D = ListPlot3D[bb, Filling -> 0,
FillingStyle -> Opacity[.5, Green], PlotStyle -> None,
BoundaryStyle -> None, Mesh -> None];
assocc = Association[#, #2 -> #3 & @@@ N[cc]];
lp3D = lp3D /. GraphicsComplex[a_, b___] :>
GraphicsComplex[a /. x_, y_, 0. :> x, y, assocc[x, y], b];
lp3D = Replace[lp3D, a___, EdgeForm[], ___, ___, b : EdgeForm[], ___, c___ :>
a, b, c, All];
Show[ListPlot3D[cc, bb, PlotRange -> 500, 3000], lp3D]
Note: If you define disp = Dispatch[#, #2 -> #3 & @@@ N[cc]];
and use x, y /. disp
in place of assocc[x,y]
, and 0, Infinity
in place of All
above, this method also works in version 9.
$endgroup$
add a comment |
$begingroup$
Update: Since the two surfaces are separated by a plane a much easier approach is to fill both surfaces to a plane (say, the z == 1500
plane) between the two and post-process to remove the polygons whose third coordinates are constant at z
:
z = 1500.;
DeleteCases[Normal[ListPlot3D[cc, bb, PlotRange -> 500, 3000,
Filling -> 1 -> z, Opacity[.5, Green], 2 -> z, Opacity[.5, Green]]],
Polygon[_, _, z .., ___], All]
Original answer:
David's method fills from the top surface to the z == 1
plane. To fill between the two surfaces we can
- Create a
ListPlot3D
object,lp3D
, usingbb
with filling to a plane below thecc
surface (say, the planez==0
) - Post-process the output of the previous step (a) to replace the coordinates
x_, y_, 0.
withx, y, w
usingw
from the entry ofcc
whose first two coordinates matchx,y
; (b) remove the polygons at the top and bottom (these happen to be in the first group of polygons) - Use
Show
to combine the result from the previous step withListPlot3D
of the two data sets.
lp3D = ListPlot3D[bb, Filling -> 0,
FillingStyle -> Opacity[.5, Green], PlotStyle -> None,
BoundaryStyle -> None, Mesh -> None];
assocc = Association[#, #2 -> #3 & @@@ N[cc]];
lp3D = lp3D /. GraphicsComplex[a_, b___] :>
GraphicsComplex[a /. x_, y_, 0. :> x, y, assocc[x, y], b];
lp3D = Replace[lp3D, a___, EdgeForm[], ___, ___, b : EdgeForm[], ___, c___ :>
a, b, c, All];
Show[ListPlot3D[cc, bb, PlotRange -> 500, 3000], lp3D]
Note: If you define disp = Dispatch[#, #2 -> #3 & @@@ N[cc]];
and use x, y /. disp
in place of assocc[x,y]
, and 0, Infinity
in place of All
above, this method also works in version 9.
$endgroup$
add a comment |
$begingroup$
Update: Since the two surfaces are separated by a plane a much easier approach is to fill both surfaces to a plane (say, the z == 1500
plane) between the two and post-process to remove the polygons whose third coordinates are constant at z
:
z = 1500.;
DeleteCases[Normal[ListPlot3D[cc, bb, PlotRange -> 500, 3000,
Filling -> 1 -> z, Opacity[.5, Green], 2 -> z, Opacity[.5, Green]]],
Polygon[_, _, z .., ___], All]
Original answer:
David's method fills from the top surface to the z == 1
plane. To fill between the two surfaces we can
- Create a
ListPlot3D
object,lp3D
, usingbb
with filling to a plane below thecc
surface (say, the planez==0
) - Post-process the output of the previous step (a) to replace the coordinates
x_, y_, 0.
withx, y, w
usingw
from the entry ofcc
whose first two coordinates matchx,y
; (b) remove the polygons at the top and bottom (these happen to be in the first group of polygons) - Use
Show
to combine the result from the previous step withListPlot3D
of the two data sets.
lp3D = ListPlot3D[bb, Filling -> 0,
FillingStyle -> Opacity[.5, Green], PlotStyle -> None,
BoundaryStyle -> None, Mesh -> None];
assocc = Association[#, #2 -> #3 & @@@ N[cc]];
lp3D = lp3D /. GraphicsComplex[a_, b___] :>
GraphicsComplex[a /. x_, y_, 0. :> x, y, assocc[x, y], b];
lp3D = Replace[lp3D, a___, EdgeForm[], ___, ___, b : EdgeForm[], ___, c___ :>
a, b, c, All];
Show[ListPlot3D[cc, bb, PlotRange -> 500, 3000], lp3D]
Note: If you define disp = Dispatch[#, #2 -> #3 & @@@ N[cc]];
and use x, y /. disp
in place of assocc[x,y]
, and 0, Infinity
in place of All
above, this method also works in version 9.
$endgroup$
Update: Since the two surfaces are separated by a plane a much easier approach is to fill both surfaces to a plane (say, the z == 1500
plane) between the two and post-process to remove the polygons whose third coordinates are constant at z
:
z = 1500.;
DeleteCases[Normal[ListPlot3D[cc, bb, PlotRange -> 500, 3000,
Filling -> 1 -> z, Opacity[.5, Green], 2 -> z, Opacity[.5, Green]]],
Polygon[_, _, z .., ___], All]
Original answer:
David's method fills from the top surface to the z == 1
plane. To fill between the two surfaces we can
- Create a
ListPlot3D
object,lp3D
, usingbb
with filling to a plane below thecc
surface (say, the planez==0
) - Post-process the output of the previous step (a) to replace the coordinates
x_, y_, 0.
withx, y, w
usingw
from the entry ofcc
whose first two coordinates matchx,y
; (b) remove the polygons at the top and bottom (these happen to be in the first group of polygons) - Use
Show
to combine the result from the previous step withListPlot3D
of the two data sets.
lp3D = ListPlot3D[bb, Filling -> 0,
FillingStyle -> Opacity[.5, Green], PlotStyle -> None,
BoundaryStyle -> None, Mesh -> None];
assocc = Association[#, #2 -> #3 & @@@ N[cc]];
lp3D = lp3D /. GraphicsComplex[a_, b___] :>
GraphicsComplex[a /. x_, y_, 0. :> x, y, assocc[x, y], b];
lp3D = Replace[lp3D, a___, EdgeForm[], ___, ___, b : EdgeForm[], ___, c___ :>
a, b, c, All];
Show[ListPlot3D[cc, bb, PlotRange -> 500, 3000], lp3D]
Note: If you define disp = Dispatch[#, #2 -> #3 & @@@ N[cc]];
and use x, y /. disp
in place of assocc[x,y]
, and 0, Infinity
in place of All
above, this method also works in version 9.
edited May 25 at 7:19
answered May 25 at 5:25
kglrkglr
195k10216439
195k10216439
add a comment |
add a comment |
Kathy is a new contributor. Be nice, and check out our Code of Conduct.
Kathy is a new contributor. Be nice, and check out our Code of Conduct.
Kathy is a new contributor. Be nice, and check out our Code of Conduct.
Kathy is a new contributor. Be nice, and check out our Code of Conduct.
Thanks for contributing an answer to Mathematica Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
Use MathJax to format equations. MathJax reference.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f199064%2ffilling-between-two-arrays-with-listpointplot3d%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
$begingroup$
Related, but in 2D: mathematica.stackexchange.com/questions/78626/…
$endgroup$
– Carl Lange
May 25 at 0:16
$begingroup$
This is an amazing use of Mathematica and the Wolfram Language!!! I have a minor in plant sciences and took a really influential soil science course in the process, can you clarify what you might want to do with this? How are you thinking you would be representing the various layers? It would be awesome to mark it up with the layer designations!
$endgroup$
– CA Trevillian
May 25 at 6:38