Plot 2D graphs into 3D system of coordinates?

Hi Jesus,

Your picture is an isometric line drawing. All such images are easy to draw by constructing the three dimensional curves, choosing the view vectors, and projecting into the plane. If you get more detailed, the main difficulty becomes the ordering and stacking along the axis of projection. I think it’s advantageous to use Graphics as opposed to Graphics3D because the output of Graphics is a scalable vector, seems to be more reliable for including in papers. I’ve already given a few examples in a recent topic:

Plotting the Contours of Deformed Hyperspheres

Here’s another example more along the lines of what you are looking for:

Function Definitions

Amp = Normalize[(-1)^# Exp[-#] & /@ Range[4]];
fs = Times[Cos[k x] /. k -> (# 2 Pi) & /@ Range[4], Amp];
F = Total[fs];
f0 = -(F /. x -> 0);
F2 = f0 + F;

View Settings

ViewV = Normalize@ {1, -1, 1};
xOrtho = Normalize@{1, 1, 0};
yOrtho = Normalize@Cross[ViewV, xOrtho];
Projector = {xOrtho, yOrtho};
colors = Partition[{Red, Orange, Yellow, Green, Blue}, 2, 1];
intRatio = {25, 9, 3, 2};

Curve to Points

GetLine[fx_, xm_, xp_] :=  Cases[Plot[fx, {x, xm, xp}, PlotRange -> All], Line[_], Infinity]
GetLine[fx_, xm_, xp_, n_, m_] :=  Join[#, {{#[[-1, 1]], 0}, {#[[1, 1]], 0}} ] & /@ Partition[
With[{nMax = Max[Flatten[Partition[Range[0, n], m, m - 1]]]},
N[Map[{(xm + # (xp - xm)), fx /. x -> (xm + # (xp - xm))} &, 
Range[0, nMax - 1]/(nMax - 1)]]  ], m - 1, m]    

Simple Output

Graphics[Join[
MapThread[{{Dashed, 
Line[Projector.# & /@ {{#2/4, -1.1, 0}, {#2/4, 1.1, 0}}]},
GetLine[#1, -1, 1] /. {y_, z_} :> Projector.{#2/4, y, z}} &,
{fs, Range[4]}],
{{Thick, Line[Projector.# & /@ {{0, 0, 0}, {5/4, 0, 0}}], 
Line[Projector.# & /@ {{0, 0, -1.2}, {0, 0, 1.2}}],
Line[Projector.# & /@ {{0, -1.2, 0}, {0, 1.2, 0}}]}, {
{Dashed, Line[Projector.# & /@ {{-1, -1.1, -f0}, {-1, 1.1, -f0}}]},
GetLine[F, -1, 1] /. {y_, z_} :> Projector.{-1, y, z}
}}], ImageSize -> 800]

Color Line Drawing

g1 = Graphics[{EdgeForm[Thick], MapThread[{#1, #2} &,
{RandomSample[
Flatten[MapThread[
Table[Blend[#1, RandomReal[{0, 1}]], {#2}] &, {colors, 
intRatio}]]],
Polygon[# /. {y_, z_} :> Projector.{-1, y, z - f0}] & /@ 
GetLine[F2, -1, 1, 2000, 50]}]}];

Show[ g1, Graphics[{Thick,
Line[Projector.# & /@ {{0, 0, 0}, {1/4, 0, 0}}],
Line[Projector.# & /@ {{0, -1.2, 0}, {0, 1.2, 0}}],
Line[Projector.# & /@ {{0, 0, -1.2}, {0, 0, 1.2}}]}],
MapThread[DrawPart, {fs, Range[4]/4, Table[1/4, {4}], colors}],  
ImageSize -> 800]