2
$\begingroup$

the format I want result

My difficulty is to find a way to make the other waves are aligned with different axes and parts with different times

    'Manipulate[
     wave1 = ParametricPlot3D[{{0, u, Sech[u]}}, {u, -10, 10}, 
       PlotStyle -> Directive[Thickness[.007], Lighter[Black, .5]]];
     wave2 = ParametricPlot3D[{{t, u, Sech[u - t]}}, {u, -10, 10}, 
       PlotStyle -> Directive[Thickness[.007], Lighter[Black, .5]]];
     wave3 = ParametricPlot3D[{{t*2, u, Sech[u - t*2]}}, {u, -10, 10}, 
       PlotStyle -> Directive[Thickness[.007], Lighter[Black, .5]]];
     Show[
      wave1, Graphics3D[{Opacity[1], 
        EdgeForm[], (wave1[[1]] /. 
          Line[t___] :> Polygon[Append[t, {Last[t][[1]], 0, 0}]])}],
      wave2, Graphics3D[{Opacity[1], 
        EdgeForm[], (wave2[[1]] /. 
          Line[t___] :> Polygon[Append[t, {Last[t][[1]], 0, 0}]])}],
      wave3, Graphics3D[{Opacity[1], 
        EdgeForm[], (wave3[[1]] /. 
          Line[t___] :> Polygon[Append[t, {Last[t][[1]], 0, 0}]])}],
      Boxed -> False, SphericalRegion -> False, 
      PlotRange -> {{-3, 10}, {-3, 3}, {-1, 2}}, Axes -> True, 
      Ticks -> False, AxesOrigin -> {0, 0, 0}, 
      AxesLabel -> {Style["t", Italic], Style["x", Italic], 
        Style["y", Italic]}, ImageSize -> {400, 400}, 
      AxesStyle -> Arrowheads[{{Automatic, Automatic, h}}],
      ImageSize -> {400, 400}], {{t, 0.311, "t"}, 0, 10}]```



$\endgroup$
2
  • $\begingroup$ Related question $\endgroup$
    – MelaGo
    May 29 at 1:58
  • 1
    $\begingroup$ SliceContourPlot3D with surface specification {"YStackedPlanes", 3} might work. In any case, do not clutter your code with Manipulate and formatting options until your basic code is working. $\endgroup$
    – bbgodfrey
    May 29 at 4:25
3
$\begingroup$

enter image description here

ImagePadding was used to shift each plot up and over by some amount and then Show was used to display the shifted plots on top of each other. The code that produced the image is

Clear[plot] 
plot[k_] := With[{kmax = 3, pad = 30},
  Image@Plot[5 + (x - k) (1 - x + k), {x, -2 + k, 3 + k},
    Axes -> If[k == 0, True, {True, False}],
    AxesOrigin -> {0, 0},
    Filling -> Axis,
    FillingStyle -> GrayLevel[1 - .2 k/kmax, .9],
    Frame -> False,
    GridLines -> None,
    ImagePadding -> {{20 + k*pad, 20 + (kmax - k)*pad}, {20 + k*pad, 
       20 + (kmax - k)*pad}},
    PlotRange -> {{-3, 10}, {0, 9}}]
  ]
arr = Graphics[Arrow[{{160, 45}, {580, 465}}],
   ImageSize -> ImageDimensions[plot[0]]];

Show[{arr, plot[3], plot[2], plot[1], plot[0]},
  ImageSize -> Medium] // ImageCrop

Each plot is padded on all sides by a minimum of 20 to allow room the scales. The first plot is padded on the right and above by an additional kmax*pad. The each successive plot is padded more on the left and the bottom and less on the right and the top. Note that the GrayLevel directive includes an opacity parameter, which is set to 0.9.

The above code includes an arrow that does not appear the above graphics.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.